1// Copyright 2019 Google LLC.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15
16// Code generated by protoc-gen-go. DO NOT EDIT.
17// versions:
18// 	protoc-gen-go v1.22.0
19// 	protoc        v3.11.2
20// source: google/cloud/iot/v1/resources.proto
21
22package iot
23
24import (
25	reflect "reflect"
26	sync "sync"
27
28	proto "github.com/golang/protobuf/proto"
29	timestamp "github.com/golang/protobuf/ptypes/timestamp"
30	_ "google.golang.org/genproto/googleapis/api/annotations"
31	status "google.golang.org/genproto/googleapis/rpc/status"
32	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
33	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
34)
35
36const (
37	// Verify that this generated code is sufficiently up-to-date.
38	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
39	// Verify that runtime/protoimpl is sufficiently up-to-date.
40	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
41)
42
43// This is a compile-time assertion that a sufficiently up-to-date version
44// of the legacy proto package is being used.
45const _ = proto.ProtoPackageIsVersion4
46
47// Indicates whether an MQTT connection is enabled or disabled. See the field
48// description for details.
49type MqttState int32
50
51const (
52	// No MQTT state specified. If not specified, MQTT will be enabled by default.
53	MqttState_MQTT_STATE_UNSPECIFIED MqttState = 0
54	// Enables a MQTT connection.
55	MqttState_MQTT_ENABLED MqttState = 1
56	// Disables a MQTT connection.
57	MqttState_MQTT_DISABLED MqttState = 2
58)
59
60// Enum value maps for MqttState.
61var (
62	MqttState_name = map[int32]string{
63		0: "MQTT_STATE_UNSPECIFIED",
64		1: "MQTT_ENABLED",
65		2: "MQTT_DISABLED",
66	}
67	MqttState_value = map[string]int32{
68		"MQTT_STATE_UNSPECIFIED": 0,
69		"MQTT_ENABLED":           1,
70		"MQTT_DISABLED":          2,
71	}
72)
73
74func (x MqttState) Enum() *MqttState {
75	p := new(MqttState)
76	*p = x
77	return p
78}
79
80func (x MqttState) String() string {
81	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
82}
83
84func (MqttState) Descriptor() protoreflect.EnumDescriptor {
85	return file_google_cloud_iot_v1_resources_proto_enumTypes[0].Descriptor()
86}
87
88func (MqttState) Type() protoreflect.EnumType {
89	return &file_google_cloud_iot_v1_resources_proto_enumTypes[0]
90}
91
92func (x MqttState) Number() protoreflect.EnumNumber {
93	return protoreflect.EnumNumber(x)
94}
95
96// Deprecated: Use MqttState.Descriptor instead.
97func (MqttState) EnumDescriptor() ([]byte, []int) {
98	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{0}
99}
100
101// Indicates whether DeviceService (HTTP) is enabled or disabled for the
102// registry. See the field description for details.
103type HttpState int32
104
105const (
106	// No HTTP state specified. If not specified, DeviceService will be
107	// enabled by default.
108	HttpState_HTTP_STATE_UNSPECIFIED HttpState = 0
109	// Enables DeviceService (HTTP) service for the registry.
110	HttpState_HTTP_ENABLED HttpState = 1
111	// Disables DeviceService (HTTP) service for the registry.
112	HttpState_HTTP_DISABLED HttpState = 2
113)
114
115// Enum value maps for HttpState.
116var (
117	HttpState_name = map[int32]string{
118		0: "HTTP_STATE_UNSPECIFIED",
119		1: "HTTP_ENABLED",
120		2: "HTTP_DISABLED",
121	}
122	HttpState_value = map[string]int32{
123		"HTTP_STATE_UNSPECIFIED": 0,
124		"HTTP_ENABLED":           1,
125		"HTTP_DISABLED":          2,
126	}
127)
128
129func (x HttpState) Enum() *HttpState {
130	p := new(HttpState)
131	*p = x
132	return p
133}
134
135func (x HttpState) String() string {
136	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
137}
138
139func (HttpState) Descriptor() protoreflect.EnumDescriptor {
140	return file_google_cloud_iot_v1_resources_proto_enumTypes[1].Descriptor()
141}
142
143func (HttpState) Type() protoreflect.EnumType {
144	return &file_google_cloud_iot_v1_resources_proto_enumTypes[1]
145}
146
147func (x HttpState) Number() protoreflect.EnumNumber {
148	return protoreflect.EnumNumber(x)
149}
150
151// Deprecated: Use HttpState.Descriptor instead.
152func (HttpState) EnumDescriptor() ([]byte, []int) {
153	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{1}
154}
155
156// **Beta Feature**
157//
158// The logging verbosity for device activity. Specifies which events should be
159// written to logs. For example, if the LogLevel is ERROR, only events that
160// terminate in errors will be logged. LogLevel is inclusive; enabling INFO
161// logging will also enable ERROR logging.
162type LogLevel int32
163
164const (
165	// No logging specified. If not specified, logging will be disabled.
166	LogLevel_LOG_LEVEL_UNSPECIFIED LogLevel = 0
167	// Disables logging.
168	LogLevel_NONE LogLevel = 10
169	// Error events will be logged.
170	LogLevel_ERROR LogLevel = 20
171	// Informational events will be logged, such as connections and
172	// disconnections.
173	LogLevel_INFO LogLevel = 30
174	// All events will be logged.
175	LogLevel_DEBUG LogLevel = 40
176)
177
178// Enum value maps for LogLevel.
179var (
180	LogLevel_name = map[int32]string{
181		0:  "LOG_LEVEL_UNSPECIFIED",
182		10: "NONE",
183		20: "ERROR",
184		30: "INFO",
185		40: "DEBUG",
186	}
187	LogLevel_value = map[string]int32{
188		"LOG_LEVEL_UNSPECIFIED": 0,
189		"NONE":                  10,
190		"ERROR":                 20,
191		"INFO":                  30,
192		"DEBUG":                 40,
193	}
194)
195
196func (x LogLevel) Enum() *LogLevel {
197	p := new(LogLevel)
198	*p = x
199	return p
200}
201
202func (x LogLevel) String() string {
203	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
204}
205
206func (LogLevel) Descriptor() protoreflect.EnumDescriptor {
207	return file_google_cloud_iot_v1_resources_proto_enumTypes[2].Descriptor()
208}
209
210func (LogLevel) Type() protoreflect.EnumType {
211	return &file_google_cloud_iot_v1_resources_proto_enumTypes[2]
212}
213
214func (x LogLevel) Number() protoreflect.EnumNumber {
215	return protoreflect.EnumNumber(x)
216}
217
218// Deprecated: Use LogLevel.Descriptor instead.
219func (LogLevel) EnumDescriptor() ([]byte, []int) {
220	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{2}
221}
222
223// Gateway type.
224type GatewayType int32
225
226const (
227	// If unspecified, the device is considered a non-gateway device.
228	GatewayType_GATEWAY_TYPE_UNSPECIFIED GatewayType = 0
229	// The device is a gateway.
230	GatewayType_GATEWAY GatewayType = 1
231	// The device is not a gateway.
232	GatewayType_NON_GATEWAY GatewayType = 2
233)
234
235// Enum value maps for GatewayType.
236var (
237	GatewayType_name = map[int32]string{
238		0: "GATEWAY_TYPE_UNSPECIFIED",
239		1: "GATEWAY",
240		2: "NON_GATEWAY",
241	}
242	GatewayType_value = map[string]int32{
243		"GATEWAY_TYPE_UNSPECIFIED": 0,
244		"GATEWAY":                  1,
245		"NON_GATEWAY":              2,
246	}
247)
248
249func (x GatewayType) Enum() *GatewayType {
250	p := new(GatewayType)
251	*p = x
252	return p
253}
254
255func (x GatewayType) String() string {
256	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
257}
258
259func (GatewayType) Descriptor() protoreflect.EnumDescriptor {
260	return file_google_cloud_iot_v1_resources_proto_enumTypes[3].Descriptor()
261}
262
263func (GatewayType) Type() protoreflect.EnumType {
264	return &file_google_cloud_iot_v1_resources_proto_enumTypes[3]
265}
266
267func (x GatewayType) Number() protoreflect.EnumNumber {
268	return protoreflect.EnumNumber(x)
269}
270
271// Deprecated: Use GatewayType.Descriptor instead.
272func (GatewayType) EnumDescriptor() ([]byte, []int) {
273	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{3}
274}
275
276// The gateway authorization/authentication method. This setting determines how
277// Cloud IoT Core authorizes/authenticate devices to access the gateway.
278type GatewayAuthMethod int32
279
280const (
281	// No authentication/authorization method specified. No devices are allowed to
282	// access the gateway.
283	GatewayAuthMethod_GATEWAY_AUTH_METHOD_UNSPECIFIED GatewayAuthMethod = 0
284	// The device is authenticated through the gateway association only. Device
285	// credentials are ignored even if provided.
286	GatewayAuthMethod_ASSOCIATION_ONLY GatewayAuthMethod = 1
287	// The device is authenticated through its own credentials. Gateway
288	// association is not checked.
289	GatewayAuthMethod_DEVICE_AUTH_TOKEN_ONLY GatewayAuthMethod = 2
290	// The device is authenticated through both device credentials and gateway
291	// association. The device must be bound to the gateway and must provide its
292	// own credentials.
293	GatewayAuthMethod_ASSOCIATION_AND_DEVICE_AUTH_TOKEN GatewayAuthMethod = 3
294)
295
296// Enum value maps for GatewayAuthMethod.
297var (
298	GatewayAuthMethod_name = map[int32]string{
299		0: "GATEWAY_AUTH_METHOD_UNSPECIFIED",
300		1: "ASSOCIATION_ONLY",
301		2: "DEVICE_AUTH_TOKEN_ONLY",
302		3: "ASSOCIATION_AND_DEVICE_AUTH_TOKEN",
303	}
304	GatewayAuthMethod_value = map[string]int32{
305		"GATEWAY_AUTH_METHOD_UNSPECIFIED":   0,
306		"ASSOCIATION_ONLY":                  1,
307		"DEVICE_AUTH_TOKEN_ONLY":            2,
308		"ASSOCIATION_AND_DEVICE_AUTH_TOKEN": 3,
309	}
310)
311
312func (x GatewayAuthMethod) Enum() *GatewayAuthMethod {
313	p := new(GatewayAuthMethod)
314	*p = x
315	return p
316}
317
318func (x GatewayAuthMethod) String() string {
319	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
320}
321
322func (GatewayAuthMethod) Descriptor() protoreflect.EnumDescriptor {
323	return file_google_cloud_iot_v1_resources_proto_enumTypes[4].Descriptor()
324}
325
326func (GatewayAuthMethod) Type() protoreflect.EnumType {
327	return &file_google_cloud_iot_v1_resources_proto_enumTypes[4]
328}
329
330func (x GatewayAuthMethod) Number() protoreflect.EnumNumber {
331	return protoreflect.EnumNumber(x)
332}
333
334// Deprecated: Use GatewayAuthMethod.Descriptor instead.
335func (GatewayAuthMethod) EnumDescriptor() ([]byte, []int) {
336	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{4}
337}
338
339// The supported formats for the public key.
340type PublicKeyCertificateFormat int32
341
342const (
343	// The format has not been specified. This is an invalid default value and
344	// must not be used.
345	PublicKeyCertificateFormat_UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT PublicKeyCertificateFormat = 0
346	// An X.509v3 certificate ([RFC5280](https://www.ietf.org/rfc/rfc5280.txt)),
347	// encoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and
348	// `-----END CERTIFICATE-----`.
349	PublicKeyCertificateFormat_X509_CERTIFICATE_PEM PublicKeyCertificateFormat = 1
350)
351
352// Enum value maps for PublicKeyCertificateFormat.
353var (
354	PublicKeyCertificateFormat_name = map[int32]string{
355		0: "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT",
356		1: "X509_CERTIFICATE_PEM",
357	}
358	PublicKeyCertificateFormat_value = map[string]int32{
359		"UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT": 0,
360		"X509_CERTIFICATE_PEM":                      1,
361	}
362)
363
364func (x PublicKeyCertificateFormat) Enum() *PublicKeyCertificateFormat {
365	p := new(PublicKeyCertificateFormat)
366	*p = x
367	return p
368}
369
370func (x PublicKeyCertificateFormat) String() string {
371	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
372}
373
374func (PublicKeyCertificateFormat) Descriptor() protoreflect.EnumDescriptor {
375	return file_google_cloud_iot_v1_resources_proto_enumTypes[5].Descriptor()
376}
377
378func (PublicKeyCertificateFormat) Type() protoreflect.EnumType {
379	return &file_google_cloud_iot_v1_resources_proto_enumTypes[5]
380}
381
382func (x PublicKeyCertificateFormat) Number() protoreflect.EnumNumber {
383	return protoreflect.EnumNumber(x)
384}
385
386// Deprecated: Use PublicKeyCertificateFormat.Descriptor instead.
387func (PublicKeyCertificateFormat) EnumDescriptor() ([]byte, []int) {
388	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{5}
389}
390
391// The supported formats for the public key.
392type PublicKeyFormat int32
393
394const (
395	// The format has not been specified. This is an invalid default value and
396	// must not be used.
397	PublicKeyFormat_UNSPECIFIED_PUBLIC_KEY_FORMAT PublicKeyFormat = 0
398	// An RSA public key encoded in base64, and wrapped by
399	// `-----BEGIN PUBLIC KEY-----` and `-----END PUBLIC KEY-----`. This can be
400	// used to verify `RS256` signatures in JWT tokens ([RFC7518](
401	// https://www.ietf.org/rfc/rfc7518.txt)).
402	PublicKeyFormat_RSA_PEM PublicKeyFormat = 3
403	// As RSA_PEM, but wrapped in an X.509v3 certificate ([RFC5280](
404	// https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by
405	// `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.
406	PublicKeyFormat_RSA_X509_PEM PublicKeyFormat = 1
407	// Public key for the ECDSA algorithm using P-256 and SHA-256, encoded in
408	// base64, and wrapped by `-----BEGIN PUBLIC KEY-----` and `-----END
409	// PUBLIC KEY-----`. This can be used to verify JWT tokens with the `ES256`
410	// algorithm ([RFC7518](https://www.ietf.org/rfc/rfc7518.txt)). This curve is
411	// defined in [OpenSSL](https://www.openssl.org/) as the `prime256v1` curve.
412	PublicKeyFormat_ES256_PEM PublicKeyFormat = 2
413	// As ES256_PEM, but wrapped in an X.509v3 certificate ([RFC5280](
414	// https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by
415	// `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.
416	PublicKeyFormat_ES256_X509_PEM PublicKeyFormat = 4
417)
418
419// Enum value maps for PublicKeyFormat.
420var (
421	PublicKeyFormat_name = map[int32]string{
422		0: "UNSPECIFIED_PUBLIC_KEY_FORMAT",
423		3: "RSA_PEM",
424		1: "RSA_X509_PEM",
425		2: "ES256_PEM",
426		4: "ES256_X509_PEM",
427	}
428	PublicKeyFormat_value = map[string]int32{
429		"UNSPECIFIED_PUBLIC_KEY_FORMAT": 0,
430		"RSA_PEM":                       3,
431		"RSA_X509_PEM":                  1,
432		"ES256_PEM":                     2,
433		"ES256_X509_PEM":                4,
434	}
435)
436
437func (x PublicKeyFormat) Enum() *PublicKeyFormat {
438	p := new(PublicKeyFormat)
439	*p = x
440	return p
441}
442
443func (x PublicKeyFormat) String() string {
444	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
445}
446
447func (PublicKeyFormat) Descriptor() protoreflect.EnumDescriptor {
448	return file_google_cloud_iot_v1_resources_proto_enumTypes[6].Descriptor()
449}
450
451func (PublicKeyFormat) Type() protoreflect.EnumType {
452	return &file_google_cloud_iot_v1_resources_proto_enumTypes[6]
453}
454
455func (x PublicKeyFormat) Number() protoreflect.EnumNumber {
456	return protoreflect.EnumNumber(x)
457}
458
459// Deprecated: Use PublicKeyFormat.Descriptor instead.
460func (PublicKeyFormat) EnumDescriptor() ([]byte, []int) {
461	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{6}
462}
463
464// The device resource.
465type Device struct {
466	state         protoimpl.MessageState
467	sizeCache     protoimpl.SizeCache
468	unknownFields protoimpl.UnknownFields
469
470	// The user-defined device identifier. The device ID must be unique
471	// within a device registry.
472	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
473	// The resource path name. For example,
474	// `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
475	// `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
476	// When `name` is populated as a response from the service, it always ends
477	// in the device numeric ID.
478	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
479	// [Output only] A server-defined unique numeric ID for the device. This is a
480	// more compact way to identify devices, and it is globally unique.
481	NumId uint64 `protobuf:"varint,3,opt,name=num_id,json=numId,proto3" json:"num_id,omitempty"`
482	// The credentials used to authenticate this device. To allow credential
483	// rotation without interruption, multiple device credentials can be bound to
484	// this device. No more than 3 credentials can be bound to a single device at
485	// a time. When new credentials are added to a device, they are verified
486	// against the registry credentials. For details, see the description of the
487	// `DeviceRegistry.credentials` field.
488	Credentials []*DeviceCredential `protobuf:"bytes,12,rep,name=credentials,proto3" json:"credentials,omitempty"`
489	// [Output only] The last time an MQTT `PINGREQ` was received. This field
490	// applies only to devices connecting through MQTT. MQTT clients usually only
491	// send `PINGREQ` messages if the connection is idle, and no other messages
492	// have been sent. Timestamps are periodically collected and written to
493	// storage; they may be stale by a few minutes.
494	LastHeartbeatTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=last_heartbeat_time,json=lastHeartbeatTime,proto3" json:"last_heartbeat_time,omitempty"`
495	// [Output only] The last time a telemetry event was received. Timestamps are
496	// periodically collected and written to storage; they may be stale by a few
497	// minutes.
498	LastEventTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=last_event_time,json=lastEventTime,proto3" json:"last_event_time,omitempty"`
499	// [Output only] The last time a state event was received. Timestamps are
500	// periodically collected and written to storage; they may be stale by a few
501	// minutes.
502	LastStateTime *timestamp.Timestamp `protobuf:"bytes,20,opt,name=last_state_time,json=lastStateTime,proto3" json:"last_state_time,omitempty"`
503	// [Output only] The last time a cloud-to-device config version acknowledgment
504	// was received from the device. This field is only for configurations
505	// sent through MQTT.
506	LastConfigAckTime *timestamp.Timestamp `protobuf:"bytes,14,opt,name=last_config_ack_time,json=lastConfigAckTime,proto3" json:"last_config_ack_time,omitempty"`
507	// [Output only] The last time a cloud-to-device config version was sent to
508	// the device.
509	LastConfigSendTime *timestamp.Timestamp `protobuf:"bytes,18,opt,name=last_config_send_time,json=lastConfigSendTime,proto3" json:"last_config_send_time,omitempty"`
510	// If a device is blocked, connections or requests from this device will fail.
511	// Can be used to temporarily prevent the device from connecting if, for
512	// example, the sensor is generating bad data and needs maintenance.
513	Blocked bool `protobuf:"varint,19,opt,name=blocked,proto3" json:"blocked,omitempty"`
514	// [Output only] The time the most recent error occurred, such as a failure to
515	// publish to Cloud Pub/Sub. This field is the timestamp of
516	// 'last_error_status'.
517	LastErrorTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=last_error_time,json=lastErrorTime,proto3" json:"last_error_time,omitempty"`
518	// [Output only] The error message of the most recent error, such as a failure
519	// to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
520	// field. If no errors have occurred, this field has an empty message
521	// and the status code 0 == OK. Otherwise, this field is expected to have a
522	// status code other than OK.
523	LastErrorStatus *status.Status `protobuf:"bytes,11,opt,name=last_error_status,json=lastErrorStatus,proto3" json:"last_error_status,omitempty"`
524	// The most recent device configuration, which is eventually sent from
525	// Cloud IoT Core to the device. If not present on creation, the
526	// configuration will be initialized with an empty payload and version value
527	// of `1`. To update this field after creation, use the
528	// `DeviceManager.ModifyCloudToDeviceConfig` method.
529	Config *DeviceConfig `protobuf:"bytes,13,opt,name=config,proto3" json:"config,omitempty"`
530	// [Output only] The state most recently received from the device. If no state
531	// has been reported, this field is not present.
532	State *DeviceState `protobuf:"bytes,16,opt,name=state,proto3" json:"state,omitempty"`
533	// **Beta Feature**
534	//
535	// The logging verbosity for device activity. If unspecified,
536	// DeviceRegistry.log_level will be used.
537	LogLevel LogLevel `protobuf:"varint,21,opt,name=log_level,json=logLevel,proto3,enum=google.cloud.iot.v1.LogLevel" json:"log_level,omitempty"`
538	// The metadata key-value pairs assigned to the device. This metadata is not
539	// interpreted or indexed by Cloud IoT Core. It can be used to add contextual
540	// information for the device.
541	//
542	// Keys must conform to the regular expression [a-zA-Z][a-zA-Z0-9-_.+~%]+ and
543	// be less than 128 bytes in length.
544	//
545	// Values are free-form strings. Each value must be less than or equal to 32
546	// KB in size.
547	//
548	// The total size of all keys and values must be less than 256 KB, and the
549	// maximum number of key-value pairs is 500.
550	Metadata map[string]string `protobuf:"bytes,17,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
551	// Gateway-related configuration and state.
552	GatewayConfig *GatewayConfig `protobuf:"bytes,24,opt,name=gateway_config,json=gatewayConfig,proto3" json:"gateway_config,omitempty"`
553}
554
555func (x *Device) Reset() {
556	*x = Device{}
557	if protoimpl.UnsafeEnabled {
558		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[0]
559		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
560		ms.StoreMessageInfo(mi)
561	}
562}
563
564func (x *Device) String() string {
565	return protoimpl.X.MessageStringOf(x)
566}
567
568func (*Device) ProtoMessage() {}
569
570func (x *Device) ProtoReflect() protoreflect.Message {
571	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[0]
572	if protoimpl.UnsafeEnabled && x != nil {
573		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
574		if ms.LoadMessageInfo() == nil {
575			ms.StoreMessageInfo(mi)
576		}
577		return ms
578	}
579	return mi.MessageOf(x)
580}
581
582// Deprecated: Use Device.ProtoReflect.Descriptor instead.
583func (*Device) Descriptor() ([]byte, []int) {
584	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{0}
585}
586
587func (x *Device) GetId() string {
588	if x != nil {
589		return x.Id
590	}
591	return ""
592}
593
594func (x *Device) GetName() string {
595	if x != nil {
596		return x.Name
597	}
598	return ""
599}
600
601func (x *Device) GetNumId() uint64 {
602	if x != nil {
603		return x.NumId
604	}
605	return 0
606}
607
608func (x *Device) GetCredentials() []*DeviceCredential {
609	if x != nil {
610		return x.Credentials
611	}
612	return nil
613}
614
615func (x *Device) GetLastHeartbeatTime() *timestamp.Timestamp {
616	if x != nil {
617		return x.LastHeartbeatTime
618	}
619	return nil
620}
621
622func (x *Device) GetLastEventTime() *timestamp.Timestamp {
623	if x != nil {
624		return x.LastEventTime
625	}
626	return nil
627}
628
629func (x *Device) GetLastStateTime() *timestamp.Timestamp {
630	if x != nil {
631		return x.LastStateTime
632	}
633	return nil
634}
635
636func (x *Device) GetLastConfigAckTime() *timestamp.Timestamp {
637	if x != nil {
638		return x.LastConfigAckTime
639	}
640	return nil
641}
642
643func (x *Device) GetLastConfigSendTime() *timestamp.Timestamp {
644	if x != nil {
645		return x.LastConfigSendTime
646	}
647	return nil
648}
649
650func (x *Device) GetBlocked() bool {
651	if x != nil {
652		return x.Blocked
653	}
654	return false
655}
656
657func (x *Device) GetLastErrorTime() *timestamp.Timestamp {
658	if x != nil {
659		return x.LastErrorTime
660	}
661	return nil
662}
663
664func (x *Device) GetLastErrorStatus() *status.Status {
665	if x != nil {
666		return x.LastErrorStatus
667	}
668	return nil
669}
670
671func (x *Device) GetConfig() *DeviceConfig {
672	if x != nil {
673		return x.Config
674	}
675	return nil
676}
677
678func (x *Device) GetState() *DeviceState {
679	if x != nil {
680		return x.State
681	}
682	return nil
683}
684
685func (x *Device) GetLogLevel() LogLevel {
686	if x != nil {
687		return x.LogLevel
688	}
689	return LogLevel_LOG_LEVEL_UNSPECIFIED
690}
691
692func (x *Device) GetMetadata() map[string]string {
693	if x != nil {
694		return x.Metadata
695	}
696	return nil
697}
698
699func (x *Device) GetGatewayConfig() *GatewayConfig {
700	if x != nil {
701		return x.GatewayConfig
702	}
703	return nil
704}
705
706// Gateway-related configuration and state.
707type GatewayConfig struct {
708	state         protoimpl.MessageState
709	sizeCache     protoimpl.SizeCache
710	unknownFields protoimpl.UnknownFields
711
712	// Indicates whether the device is a gateway.
713	GatewayType GatewayType `protobuf:"varint,1,opt,name=gateway_type,json=gatewayType,proto3,enum=google.cloud.iot.v1.GatewayType" json:"gateway_type,omitempty"`
714	// Indicates how to authorize and/or authenticate devices to access the
715	// gateway.
716	GatewayAuthMethod GatewayAuthMethod `protobuf:"varint,2,opt,name=gateway_auth_method,json=gatewayAuthMethod,proto3,enum=google.cloud.iot.v1.GatewayAuthMethod" json:"gateway_auth_method,omitempty"`
717	// [Output only] The ID of the gateway the device accessed most recently.
718	LastAccessedGatewayId string `protobuf:"bytes,3,opt,name=last_accessed_gateway_id,json=lastAccessedGatewayId,proto3" json:"last_accessed_gateway_id,omitempty"`
719	// [Output only] The most recent time at which the device accessed the gateway
720	// specified in `last_accessed_gateway`.
721	LastAccessedGatewayTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_accessed_gateway_time,json=lastAccessedGatewayTime,proto3" json:"last_accessed_gateway_time,omitempty"`
722}
723
724func (x *GatewayConfig) Reset() {
725	*x = GatewayConfig{}
726	if protoimpl.UnsafeEnabled {
727		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[1]
728		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
729		ms.StoreMessageInfo(mi)
730	}
731}
732
733func (x *GatewayConfig) String() string {
734	return protoimpl.X.MessageStringOf(x)
735}
736
737func (*GatewayConfig) ProtoMessage() {}
738
739func (x *GatewayConfig) ProtoReflect() protoreflect.Message {
740	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[1]
741	if protoimpl.UnsafeEnabled && x != nil {
742		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
743		if ms.LoadMessageInfo() == nil {
744			ms.StoreMessageInfo(mi)
745		}
746		return ms
747	}
748	return mi.MessageOf(x)
749}
750
751// Deprecated: Use GatewayConfig.ProtoReflect.Descriptor instead.
752func (*GatewayConfig) Descriptor() ([]byte, []int) {
753	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{1}
754}
755
756func (x *GatewayConfig) GetGatewayType() GatewayType {
757	if x != nil {
758		return x.GatewayType
759	}
760	return GatewayType_GATEWAY_TYPE_UNSPECIFIED
761}
762
763func (x *GatewayConfig) GetGatewayAuthMethod() GatewayAuthMethod {
764	if x != nil {
765		return x.GatewayAuthMethod
766	}
767	return GatewayAuthMethod_GATEWAY_AUTH_METHOD_UNSPECIFIED
768}
769
770func (x *GatewayConfig) GetLastAccessedGatewayId() string {
771	if x != nil {
772		return x.LastAccessedGatewayId
773	}
774	return ""
775}
776
777func (x *GatewayConfig) GetLastAccessedGatewayTime() *timestamp.Timestamp {
778	if x != nil {
779		return x.LastAccessedGatewayTime
780	}
781	return nil
782}
783
784// A container for a group of devices.
785type DeviceRegistry struct {
786	state         protoimpl.MessageState
787	sizeCache     protoimpl.SizeCache
788	unknownFields protoimpl.UnknownFields
789
790	// The identifier of this device registry. For example, `myRegistry`.
791	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
792	// The resource path name. For example,
793	// `projects/example-project/locations/us-central1/registries/my-registry`.
794	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
795	// The configuration for notification of telemetry events received from the
796	// device. All telemetry events that were successfully published by the
797	// device and acknowledged by Cloud IoT Core are guaranteed to be
798	// delivered to Cloud Pub/Sub. If multiple configurations match a message,
799	// only the first matching configuration is used. If you try to publish a
800	// device telemetry event using MQTT without specifying a Cloud Pub/Sub topic
801	// for the device's registry, the connection closes automatically. If you try
802	// to do so using an HTTP connection, an error is returned. Up to 10
803	// configurations may be provided.
804	EventNotificationConfigs []*EventNotificationConfig `protobuf:"bytes,10,rep,name=event_notification_configs,json=eventNotificationConfigs,proto3" json:"event_notification_configs,omitempty"`
805	// The configuration for notification of new states received from the device.
806	// State updates are guaranteed to be stored in the state history, but
807	// notifications to Cloud Pub/Sub are not guaranteed. For example, if
808	// permissions are misconfigured or the specified topic doesn't exist, no
809	// notification will be published but the state will still be stored in Cloud
810	// IoT Core.
811	StateNotificationConfig *StateNotificationConfig `protobuf:"bytes,7,opt,name=state_notification_config,json=stateNotificationConfig,proto3" json:"state_notification_config,omitempty"`
812	// The MQTT configuration for this device registry.
813	MqttConfig *MqttConfig `protobuf:"bytes,4,opt,name=mqtt_config,json=mqttConfig,proto3" json:"mqtt_config,omitempty"`
814	// The DeviceService (HTTP) configuration for this device registry.
815	HttpConfig *HttpConfig `protobuf:"bytes,9,opt,name=http_config,json=httpConfig,proto3" json:"http_config,omitempty"`
816	// **Beta Feature**
817	//
818	// The default logging verbosity for activity from devices in this registry.
819	// The verbosity level can be overridden by Device.log_level.
820	LogLevel LogLevel `protobuf:"varint,11,opt,name=log_level,json=logLevel,proto3,enum=google.cloud.iot.v1.LogLevel" json:"log_level,omitempty"`
821	// The credentials used to verify the device credentials. No more than 10
822	// credentials can be bound to a single registry at a time. The verification
823	// process occurs at the time of device creation or update. If this field is
824	// empty, no verification is performed. Otherwise, the credentials of a newly
825	// created device or added credentials of an updated device should be signed
826	// with one of these registry credentials.
827	//
828	// Note, however, that existing devices will never be affected by
829	// modifications to this list of credentials: after a device has been
830	// successfully created in a registry, it should be able to connect even if
831	// its registry credentials are revoked, deleted, or modified.
832	Credentials []*RegistryCredential `protobuf:"bytes,8,rep,name=credentials,proto3" json:"credentials,omitempty"`
833}
834
835func (x *DeviceRegistry) Reset() {
836	*x = DeviceRegistry{}
837	if protoimpl.UnsafeEnabled {
838		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[2]
839		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
840		ms.StoreMessageInfo(mi)
841	}
842}
843
844func (x *DeviceRegistry) String() string {
845	return protoimpl.X.MessageStringOf(x)
846}
847
848func (*DeviceRegistry) ProtoMessage() {}
849
850func (x *DeviceRegistry) ProtoReflect() protoreflect.Message {
851	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[2]
852	if protoimpl.UnsafeEnabled && x != nil {
853		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
854		if ms.LoadMessageInfo() == nil {
855			ms.StoreMessageInfo(mi)
856		}
857		return ms
858	}
859	return mi.MessageOf(x)
860}
861
862// Deprecated: Use DeviceRegistry.ProtoReflect.Descriptor instead.
863func (*DeviceRegistry) Descriptor() ([]byte, []int) {
864	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{2}
865}
866
867func (x *DeviceRegistry) GetId() string {
868	if x != nil {
869		return x.Id
870	}
871	return ""
872}
873
874func (x *DeviceRegistry) GetName() string {
875	if x != nil {
876		return x.Name
877	}
878	return ""
879}
880
881func (x *DeviceRegistry) GetEventNotificationConfigs() []*EventNotificationConfig {
882	if x != nil {
883		return x.EventNotificationConfigs
884	}
885	return nil
886}
887
888func (x *DeviceRegistry) GetStateNotificationConfig() *StateNotificationConfig {
889	if x != nil {
890		return x.StateNotificationConfig
891	}
892	return nil
893}
894
895func (x *DeviceRegistry) GetMqttConfig() *MqttConfig {
896	if x != nil {
897		return x.MqttConfig
898	}
899	return nil
900}
901
902func (x *DeviceRegistry) GetHttpConfig() *HttpConfig {
903	if x != nil {
904		return x.HttpConfig
905	}
906	return nil
907}
908
909func (x *DeviceRegistry) GetLogLevel() LogLevel {
910	if x != nil {
911		return x.LogLevel
912	}
913	return LogLevel_LOG_LEVEL_UNSPECIFIED
914}
915
916func (x *DeviceRegistry) GetCredentials() []*RegistryCredential {
917	if x != nil {
918		return x.Credentials
919	}
920	return nil
921}
922
923// The configuration of MQTT for a device registry.
924type MqttConfig struct {
925	state         protoimpl.MessageState
926	sizeCache     protoimpl.SizeCache
927	unknownFields protoimpl.UnknownFields
928
929	// If enabled, allows connections using the MQTT protocol. Otherwise, MQTT
930	// connections to this registry will fail.
931	MqttEnabledState MqttState `protobuf:"varint,1,opt,name=mqtt_enabled_state,json=mqttEnabledState,proto3,enum=google.cloud.iot.v1.MqttState" json:"mqtt_enabled_state,omitempty"`
932}
933
934func (x *MqttConfig) Reset() {
935	*x = MqttConfig{}
936	if protoimpl.UnsafeEnabled {
937		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[3]
938		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
939		ms.StoreMessageInfo(mi)
940	}
941}
942
943func (x *MqttConfig) String() string {
944	return protoimpl.X.MessageStringOf(x)
945}
946
947func (*MqttConfig) ProtoMessage() {}
948
949func (x *MqttConfig) ProtoReflect() protoreflect.Message {
950	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[3]
951	if protoimpl.UnsafeEnabled && x != nil {
952		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
953		if ms.LoadMessageInfo() == nil {
954			ms.StoreMessageInfo(mi)
955		}
956		return ms
957	}
958	return mi.MessageOf(x)
959}
960
961// Deprecated: Use MqttConfig.ProtoReflect.Descriptor instead.
962func (*MqttConfig) Descriptor() ([]byte, []int) {
963	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{3}
964}
965
966func (x *MqttConfig) GetMqttEnabledState() MqttState {
967	if x != nil {
968		return x.MqttEnabledState
969	}
970	return MqttState_MQTT_STATE_UNSPECIFIED
971}
972
973// The configuration of the HTTP bridge for a device registry.
974type HttpConfig struct {
975	state         protoimpl.MessageState
976	sizeCache     protoimpl.SizeCache
977	unknownFields protoimpl.UnknownFields
978
979	// If enabled, allows devices to use DeviceService via the HTTP protocol.
980	// Otherwise, any requests to DeviceService will fail for this registry.
981	HttpEnabledState HttpState `protobuf:"varint,1,opt,name=http_enabled_state,json=httpEnabledState,proto3,enum=google.cloud.iot.v1.HttpState" json:"http_enabled_state,omitempty"`
982}
983
984func (x *HttpConfig) Reset() {
985	*x = HttpConfig{}
986	if protoimpl.UnsafeEnabled {
987		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[4]
988		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
989		ms.StoreMessageInfo(mi)
990	}
991}
992
993func (x *HttpConfig) String() string {
994	return protoimpl.X.MessageStringOf(x)
995}
996
997func (*HttpConfig) ProtoMessage() {}
998
999func (x *HttpConfig) ProtoReflect() protoreflect.Message {
1000	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[4]
1001	if protoimpl.UnsafeEnabled && x != nil {
1002		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1003		if ms.LoadMessageInfo() == nil {
1004			ms.StoreMessageInfo(mi)
1005		}
1006		return ms
1007	}
1008	return mi.MessageOf(x)
1009}
1010
1011// Deprecated: Use HttpConfig.ProtoReflect.Descriptor instead.
1012func (*HttpConfig) Descriptor() ([]byte, []int) {
1013	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{4}
1014}
1015
1016func (x *HttpConfig) GetHttpEnabledState() HttpState {
1017	if x != nil {
1018		return x.HttpEnabledState
1019	}
1020	return HttpState_HTTP_STATE_UNSPECIFIED
1021}
1022
1023// The configuration for forwarding telemetry events.
1024type EventNotificationConfig struct {
1025	state         protoimpl.MessageState
1026	sizeCache     protoimpl.SizeCache
1027	unknownFields protoimpl.UnknownFields
1028
1029	// If the subfolder name matches this string exactly, this configuration will
1030	// be used. The string must not include the leading '/' character. If empty,
1031	// all strings are matched. This field is used only for telemetry events;
1032	// subfolders are not supported for state changes.
1033	SubfolderMatches string `protobuf:"bytes,2,opt,name=subfolder_matches,json=subfolderMatches,proto3" json:"subfolder_matches,omitempty"`
1034	// A Cloud Pub/Sub topic name. For example,
1035	// `projects/myProject/topics/deviceEvents`.
1036	PubsubTopicName string `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName,proto3" json:"pubsub_topic_name,omitempty"`
1037}
1038
1039func (x *EventNotificationConfig) Reset() {
1040	*x = EventNotificationConfig{}
1041	if protoimpl.UnsafeEnabled {
1042		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[5]
1043		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1044		ms.StoreMessageInfo(mi)
1045	}
1046}
1047
1048func (x *EventNotificationConfig) String() string {
1049	return protoimpl.X.MessageStringOf(x)
1050}
1051
1052func (*EventNotificationConfig) ProtoMessage() {}
1053
1054func (x *EventNotificationConfig) ProtoReflect() protoreflect.Message {
1055	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[5]
1056	if protoimpl.UnsafeEnabled && x != nil {
1057		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1058		if ms.LoadMessageInfo() == nil {
1059			ms.StoreMessageInfo(mi)
1060		}
1061		return ms
1062	}
1063	return mi.MessageOf(x)
1064}
1065
1066// Deprecated: Use EventNotificationConfig.ProtoReflect.Descriptor instead.
1067func (*EventNotificationConfig) Descriptor() ([]byte, []int) {
1068	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{5}
1069}
1070
1071func (x *EventNotificationConfig) GetSubfolderMatches() string {
1072	if x != nil {
1073		return x.SubfolderMatches
1074	}
1075	return ""
1076}
1077
1078func (x *EventNotificationConfig) GetPubsubTopicName() string {
1079	if x != nil {
1080		return x.PubsubTopicName
1081	}
1082	return ""
1083}
1084
1085// The configuration for notification of new states received from the device.
1086type StateNotificationConfig struct {
1087	state         protoimpl.MessageState
1088	sizeCache     protoimpl.SizeCache
1089	unknownFields protoimpl.UnknownFields
1090
1091	// A Cloud Pub/Sub topic name. For example,
1092	// `projects/myProject/topics/deviceEvents`.
1093	PubsubTopicName string `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName,proto3" json:"pubsub_topic_name,omitempty"`
1094}
1095
1096func (x *StateNotificationConfig) Reset() {
1097	*x = StateNotificationConfig{}
1098	if protoimpl.UnsafeEnabled {
1099		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[6]
1100		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1101		ms.StoreMessageInfo(mi)
1102	}
1103}
1104
1105func (x *StateNotificationConfig) String() string {
1106	return protoimpl.X.MessageStringOf(x)
1107}
1108
1109func (*StateNotificationConfig) ProtoMessage() {}
1110
1111func (x *StateNotificationConfig) ProtoReflect() protoreflect.Message {
1112	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[6]
1113	if protoimpl.UnsafeEnabled && x != nil {
1114		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1115		if ms.LoadMessageInfo() == nil {
1116			ms.StoreMessageInfo(mi)
1117		}
1118		return ms
1119	}
1120	return mi.MessageOf(x)
1121}
1122
1123// Deprecated: Use StateNotificationConfig.ProtoReflect.Descriptor instead.
1124func (*StateNotificationConfig) Descriptor() ([]byte, []int) {
1125	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{6}
1126}
1127
1128func (x *StateNotificationConfig) GetPubsubTopicName() string {
1129	if x != nil {
1130		return x.PubsubTopicName
1131	}
1132	return ""
1133}
1134
1135// A server-stored registry credential used to validate device credentials.
1136type RegistryCredential struct {
1137	state         protoimpl.MessageState
1138	sizeCache     protoimpl.SizeCache
1139	unknownFields protoimpl.UnknownFields
1140
1141	// The credential data. Reserved for expansion in the future.
1142	//
1143	// Types that are assignable to Credential:
1144	//	*RegistryCredential_PublicKeyCertificate
1145	Credential isRegistryCredential_Credential `protobuf_oneof:"credential"`
1146}
1147
1148func (x *RegistryCredential) Reset() {
1149	*x = RegistryCredential{}
1150	if protoimpl.UnsafeEnabled {
1151		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[7]
1152		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1153		ms.StoreMessageInfo(mi)
1154	}
1155}
1156
1157func (x *RegistryCredential) String() string {
1158	return protoimpl.X.MessageStringOf(x)
1159}
1160
1161func (*RegistryCredential) ProtoMessage() {}
1162
1163func (x *RegistryCredential) ProtoReflect() protoreflect.Message {
1164	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[7]
1165	if protoimpl.UnsafeEnabled && x != nil {
1166		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1167		if ms.LoadMessageInfo() == nil {
1168			ms.StoreMessageInfo(mi)
1169		}
1170		return ms
1171	}
1172	return mi.MessageOf(x)
1173}
1174
1175// Deprecated: Use RegistryCredential.ProtoReflect.Descriptor instead.
1176func (*RegistryCredential) Descriptor() ([]byte, []int) {
1177	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{7}
1178}
1179
1180func (m *RegistryCredential) GetCredential() isRegistryCredential_Credential {
1181	if m != nil {
1182		return m.Credential
1183	}
1184	return nil
1185}
1186
1187func (x *RegistryCredential) GetPublicKeyCertificate() *PublicKeyCertificate {
1188	if x, ok := x.GetCredential().(*RegistryCredential_PublicKeyCertificate); ok {
1189		return x.PublicKeyCertificate
1190	}
1191	return nil
1192}
1193
1194type isRegistryCredential_Credential interface {
1195	isRegistryCredential_Credential()
1196}
1197
1198type RegistryCredential_PublicKeyCertificate struct {
1199	// A public key certificate used to verify the device credentials.
1200	PublicKeyCertificate *PublicKeyCertificate `protobuf:"bytes,1,opt,name=public_key_certificate,json=publicKeyCertificate,proto3,oneof"`
1201}
1202
1203func (*RegistryCredential_PublicKeyCertificate) isRegistryCredential_Credential() {}
1204
1205// Details of an X.509 certificate. For informational purposes only.
1206type X509CertificateDetails struct {
1207	state         protoimpl.MessageState
1208	sizeCache     protoimpl.SizeCache
1209	unknownFields protoimpl.UnknownFields
1210
1211	// The entity that signed the certificate.
1212	Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
1213	// The entity the certificate and public key belong to.
1214	Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
1215	// The time the certificate becomes valid.
1216	StartTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
1217	// The time the certificate becomes invalid.
1218	ExpiryTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=expiry_time,json=expiryTime,proto3" json:"expiry_time,omitempty"`
1219	// The algorithm used to sign the certificate.
1220	SignatureAlgorithm string `protobuf:"bytes,5,opt,name=signature_algorithm,json=signatureAlgorithm,proto3" json:"signature_algorithm,omitempty"`
1221	// The type of public key in the certificate.
1222	PublicKeyType string `protobuf:"bytes,6,opt,name=public_key_type,json=publicKeyType,proto3" json:"public_key_type,omitempty"`
1223}
1224
1225func (x *X509CertificateDetails) Reset() {
1226	*x = X509CertificateDetails{}
1227	if protoimpl.UnsafeEnabled {
1228		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[8]
1229		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1230		ms.StoreMessageInfo(mi)
1231	}
1232}
1233
1234func (x *X509CertificateDetails) String() string {
1235	return protoimpl.X.MessageStringOf(x)
1236}
1237
1238func (*X509CertificateDetails) ProtoMessage() {}
1239
1240func (x *X509CertificateDetails) ProtoReflect() protoreflect.Message {
1241	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[8]
1242	if protoimpl.UnsafeEnabled && x != nil {
1243		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1244		if ms.LoadMessageInfo() == nil {
1245			ms.StoreMessageInfo(mi)
1246		}
1247		return ms
1248	}
1249	return mi.MessageOf(x)
1250}
1251
1252// Deprecated: Use X509CertificateDetails.ProtoReflect.Descriptor instead.
1253func (*X509CertificateDetails) Descriptor() ([]byte, []int) {
1254	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{8}
1255}
1256
1257func (x *X509CertificateDetails) GetIssuer() string {
1258	if x != nil {
1259		return x.Issuer
1260	}
1261	return ""
1262}
1263
1264func (x *X509CertificateDetails) GetSubject() string {
1265	if x != nil {
1266		return x.Subject
1267	}
1268	return ""
1269}
1270
1271func (x *X509CertificateDetails) GetStartTime() *timestamp.Timestamp {
1272	if x != nil {
1273		return x.StartTime
1274	}
1275	return nil
1276}
1277
1278func (x *X509CertificateDetails) GetExpiryTime() *timestamp.Timestamp {
1279	if x != nil {
1280		return x.ExpiryTime
1281	}
1282	return nil
1283}
1284
1285func (x *X509CertificateDetails) GetSignatureAlgorithm() string {
1286	if x != nil {
1287		return x.SignatureAlgorithm
1288	}
1289	return ""
1290}
1291
1292func (x *X509CertificateDetails) GetPublicKeyType() string {
1293	if x != nil {
1294		return x.PublicKeyType
1295	}
1296	return ""
1297}
1298
1299// A public key certificate format and data.
1300type PublicKeyCertificate struct {
1301	state         protoimpl.MessageState
1302	sizeCache     protoimpl.SizeCache
1303	unknownFields protoimpl.UnknownFields
1304
1305	// The certificate format.
1306	Format PublicKeyCertificateFormat `protobuf:"varint,1,opt,name=format,proto3,enum=google.cloud.iot.v1.PublicKeyCertificateFormat" json:"format,omitempty"`
1307	// The certificate data.
1308	Certificate string `protobuf:"bytes,2,opt,name=certificate,proto3" json:"certificate,omitempty"`
1309	// [Output only] The certificate details. Used only for X.509 certificates.
1310	X509Details *X509CertificateDetails `protobuf:"bytes,3,opt,name=x509_details,json=x509Details,proto3" json:"x509_details,omitempty"`
1311}
1312
1313func (x *PublicKeyCertificate) Reset() {
1314	*x = PublicKeyCertificate{}
1315	if protoimpl.UnsafeEnabled {
1316		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[9]
1317		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1318		ms.StoreMessageInfo(mi)
1319	}
1320}
1321
1322func (x *PublicKeyCertificate) String() string {
1323	return protoimpl.X.MessageStringOf(x)
1324}
1325
1326func (*PublicKeyCertificate) ProtoMessage() {}
1327
1328func (x *PublicKeyCertificate) ProtoReflect() protoreflect.Message {
1329	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[9]
1330	if protoimpl.UnsafeEnabled && x != nil {
1331		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1332		if ms.LoadMessageInfo() == nil {
1333			ms.StoreMessageInfo(mi)
1334		}
1335		return ms
1336	}
1337	return mi.MessageOf(x)
1338}
1339
1340// Deprecated: Use PublicKeyCertificate.ProtoReflect.Descriptor instead.
1341func (*PublicKeyCertificate) Descriptor() ([]byte, []int) {
1342	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{9}
1343}
1344
1345func (x *PublicKeyCertificate) GetFormat() PublicKeyCertificateFormat {
1346	if x != nil {
1347		return x.Format
1348	}
1349	return PublicKeyCertificateFormat_UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT
1350}
1351
1352func (x *PublicKeyCertificate) GetCertificate() string {
1353	if x != nil {
1354		return x.Certificate
1355	}
1356	return ""
1357}
1358
1359func (x *PublicKeyCertificate) GetX509Details() *X509CertificateDetails {
1360	if x != nil {
1361		return x.X509Details
1362	}
1363	return nil
1364}
1365
1366// A server-stored device credential used for authentication.
1367type DeviceCredential struct {
1368	state         protoimpl.MessageState
1369	sizeCache     protoimpl.SizeCache
1370	unknownFields protoimpl.UnknownFields
1371
1372	// The credential data. Reserved for expansion in the future.
1373	//
1374	// Types that are assignable to Credential:
1375	//	*DeviceCredential_PublicKey
1376	Credential isDeviceCredential_Credential `protobuf_oneof:"credential"`
1377	// [Optional] The time at which this credential becomes invalid. This
1378	// credential will be ignored for new client authentication requests after
1379	// this timestamp; however, it will not be automatically deleted.
1380	ExpirationTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"`
1381}
1382
1383func (x *DeviceCredential) Reset() {
1384	*x = DeviceCredential{}
1385	if protoimpl.UnsafeEnabled {
1386		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[10]
1387		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1388		ms.StoreMessageInfo(mi)
1389	}
1390}
1391
1392func (x *DeviceCredential) String() string {
1393	return protoimpl.X.MessageStringOf(x)
1394}
1395
1396func (*DeviceCredential) ProtoMessage() {}
1397
1398func (x *DeviceCredential) ProtoReflect() protoreflect.Message {
1399	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[10]
1400	if protoimpl.UnsafeEnabled && x != nil {
1401		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1402		if ms.LoadMessageInfo() == nil {
1403			ms.StoreMessageInfo(mi)
1404		}
1405		return ms
1406	}
1407	return mi.MessageOf(x)
1408}
1409
1410// Deprecated: Use DeviceCredential.ProtoReflect.Descriptor instead.
1411func (*DeviceCredential) Descriptor() ([]byte, []int) {
1412	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{10}
1413}
1414
1415func (m *DeviceCredential) GetCredential() isDeviceCredential_Credential {
1416	if m != nil {
1417		return m.Credential
1418	}
1419	return nil
1420}
1421
1422func (x *DeviceCredential) GetPublicKey() *PublicKeyCredential {
1423	if x, ok := x.GetCredential().(*DeviceCredential_PublicKey); ok {
1424		return x.PublicKey
1425	}
1426	return nil
1427}
1428
1429func (x *DeviceCredential) GetExpirationTime() *timestamp.Timestamp {
1430	if x != nil {
1431		return x.ExpirationTime
1432	}
1433	return nil
1434}
1435
1436type isDeviceCredential_Credential interface {
1437	isDeviceCredential_Credential()
1438}
1439
1440type DeviceCredential_PublicKey struct {
1441	// A public key used to verify the signature of JSON Web Tokens (JWTs).
1442	// When adding a new device credential, either via device creation or via
1443	// modifications, this public key credential may be required to be signed by
1444	// one of the registry level certificates. More specifically, if the
1445	// registry contains at least one certificate, any new device credential
1446	// must be signed by one of the registry certificates. As a result,
1447	// when the registry contains certificates, only X.509 certificates are
1448	// accepted as device credentials. However, if the registry does
1449	// not contain a certificate, self-signed certificates and public keys will
1450	// be accepted. New device credentials must be different from every
1451	// registry-level certificate.
1452	PublicKey *PublicKeyCredential `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3,oneof"`
1453}
1454
1455func (*DeviceCredential_PublicKey) isDeviceCredential_Credential() {}
1456
1457// A public key format and data.
1458type PublicKeyCredential struct {
1459	state         protoimpl.MessageState
1460	sizeCache     protoimpl.SizeCache
1461	unknownFields protoimpl.UnknownFields
1462
1463	// The format of the key.
1464	Format PublicKeyFormat `protobuf:"varint,1,opt,name=format,proto3,enum=google.cloud.iot.v1.PublicKeyFormat" json:"format,omitempty"`
1465	// The key data.
1466	Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
1467}
1468
1469func (x *PublicKeyCredential) Reset() {
1470	*x = PublicKeyCredential{}
1471	if protoimpl.UnsafeEnabled {
1472		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[11]
1473		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1474		ms.StoreMessageInfo(mi)
1475	}
1476}
1477
1478func (x *PublicKeyCredential) String() string {
1479	return protoimpl.X.MessageStringOf(x)
1480}
1481
1482func (*PublicKeyCredential) ProtoMessage() {}
1483
1484func (x *PublicKeyCredential) ProtoReflect() protoreflect.Message {
1485	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[11]
1486	if protoimpl.UnsafeEnabled && x != nil {
1487		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1488		if ms.LoadMessageInfo() == nil {
1489			ms.StoreMessageInfo(mi)
1490		}
1491		return ms
1492	}
1493	return mi.MessageOf(x)
1494}
1495
1496// Deprecated: Use PublicKeyCredential.ProtoReflect.Descriptor instead.
1497func (*PublicKeyCredential) Descriptor() ([]byte, []int) {
1498	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{11}
1499}
1500
1501func (x *PublicKeyCredential) GetFormat() PublicKeyFormat {
1502	if x != nil {
1503		return x.Format
1504	}
1505	return PublicKeyFormat_UNSPECIFIED_PUBLIC_KEY_FORMAT
1506}
1507
1508func (x *PublicKeyCredential) GetKey() string {
1509	if x != nil {
1510		return x.Key
1511	}
1512	return ""
1513}
1514
1515// The device configuration. Eventually delivered to devices.
1516type DeviceConfig struct {
1517	state         protoimpl.MessageState
1518	sizeCache     protoimpl.SizeCache
1519	unknownFields protoimpl.UnknownFields
1520
1521	// [Output only] The version of this update. The version number is assigned by
1522	// the server, and is always greater than 0 after device creation. The
1523	// version must be 0 on the `CreateDevice` request if a `config` is
1524	// specified; the response of `CreateDevice` will always have a value of 1.
1525	Version int64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
1526	// [Output only] The time at which this configuration version was updated in
1527	// Cloud IoT Core. This timestamp is set by the server.
1528	CloudUpdateTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=cloud_update_time,json=cloudUpdateTime,proto3" json:"cloud_update_time,omitempty"`
1529	// [Output only] The time at which Cloud IoT Core received the
1530	// acknowledgment from the device, indicating that the device has received
1531	// this configuration version. If this field is not present, the device has
1532	// not yet acknowledged that it received this version. Note that when
1533	// the config was sent to the device, many config versions may have been
1534	// available in Cloud IoT Core while the device was disconnected, and on
1535	// connection, only the latest version is sent to the device. Some
1536	// versions may never be sent to the device, and therefore are never
1537	// acknowledged. This timestamp is set by Cloud IoT Core.
1538	DeviceAckTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=device_ack_time,json=deviceAckTime,proto3" json:"device_ack_time,omitempty"`
1539	// The device configuration data.
1540	BinaryData []byte `protobuf:"bytes,4,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"`
1541}
1542
1543func (x *DeviceConfig) Reset() {
1544	*x = DeviceConfig{}
1545	if protoimpl.UnsafeEnabled {
1546		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[12]
1547		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1548		ms.StoreMessageInfo(mi)
1549	}
1550}
1551
1552func (x *DeviceConfig) String() string {
1553	return protoimpl.X.MessageStringOf(x)
1554}
1555
1556func (*DeviceConfig) ProtoMessage() {}
1557
1558func (x *DeviceConfig) ProtoReflect() protoreflect.Message {
1559	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[12]
1560	if protoimpl.UnsafeEnabled && x != nil {
1561		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1562		if ms.LoadMessageInfo() == nil {
1563			ms.StoreMessageInfo(mi)
1564		}
1565		return ms
1566	}
1567	return mi.MessageOf(x)
1568}
1569
1570// Deprecated: Use DeviceConfig.ProtoReflect.Descriptor instead.
1571func (*DeviceConfig) Descriptor() ([]byte, []int) {
1572	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{12}
1573}
1574
1575func (x *DeviceConfig) GetVersion() int64 {
1576	if x != nil {
1577		return x.Version
1578	}
1579	return 0
1580}
1581
1582func (x *DeviceConfig) GetCloudUpdateTime() *timestamp.Timestamp {
1583	if x != nil {
1584		return x.CloudUpdateTime
1585	}
1586	return nil
1587}
1588
1589func (x *DeviceConfig) GetDeviceAckTime() *timestamp.Timestamp {
1590	if x != nil {
1591		return x.DeviceAckTime
1592	}
1593	return nil
1594}
1595
1596func (x *DeviceConfig) GetBinaryData() []byte {
1597	if x != nil {
1598		return x.BinaryData
1599	}
1600	return nil
1601}
1602
1603// The device state, as reported by the device.
1604type DeviceState struct {
1605	state         protoimpl.MessageState
1606	sizeCache     protoimpl.SizeCache
1607	unknownFields protoimpl.UnknownFields
1608
1609	// [Output only] The time at which this state version was updated in Cloud
1610	// IoT Core.
1611	UpdateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
1612	// The device state data.
1613	BinaryData []byte `protobuf:"bytes,2,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"`
1614}
1615
1616func (x *DeviceState) Reset() {
1617	*x = DeviceState{}
1618	if protoimpl.UnsafeEnabled {
1619		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[13]
1620		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1621		ms.StoreMessageInfo(mi)
1622	}
1623}
1624
1625func (x *DeviceState) String() string {
1626	return protoimpl.X.MessageStringOf(x)
1627}
1628
1629func (*DeviceState) ProtoMessage() {}
1630
1631func (x *DeviceState) ProtoReflect() protoreflect.Message {
1632	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[13]
1633	if protoimpl.UnsafeEnabled && x != nil {
1634		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1635		if ms.LoadMessageInfo() == nil {
1636			ms.StoreMessageInfo(mi)
1637		}
1638		return ms
1639	}
1640	return mi.MessageOf(x)
1641}
1642
1643// Deprecated: Use DeviceState.ProtoReflect.Descriptor instead.
1644func (*DeviceState) Descriptor() ([]byte, []int) {
1645	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{13}
1646}
1647
1648func (x *DeviceState) GetUpdateTime() *timestamp.Timestamp {
1649	if x != nil {
1650		return x.UpdateTime
1651	}
1652	return nil
1653}
1654
1655func (x *DeviceState) GetBinaryData() []byte {
1656	if x != nil {
1657		return x.BinaryData
1658	}
1659	return nil
1660}
1661
1662var File_google_cloud_iot_v1_resources_proto protoreflect.FileDescriptor
1663
1664var file_google_cloud_iot_v1_resources_proto_rawDesc = []byte{
1665	0x0a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x69,
1666	0x6f, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e,
1667	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1668	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67,
1669	0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
1670	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
1671	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
1672	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72,
1673	0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
1674	0x8d, 0x09, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
1675	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
1676	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15,
1677	0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
1678	0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
1679	0x69, 0x61, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f,
1680	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31,
1681	0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61,
1682	0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x4a,
1683	0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74,
1684	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
1685	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
1686	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61,
1687	0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61,
1688	0x73, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20,
1689	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
1690	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
1691	0x0d, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x42,
1692	0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
1693	0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1694	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
1695	0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x69,
1696	0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
1697	0x67, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b,
1698	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
1699	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x6c, 0x61,
1700	0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12,
1701	0x4d, 0x0a, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73,
1702	0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
1703	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
1704	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74,
1705	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18,
1706	0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52,
1707	0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74,
1708	0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
1709	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1710	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c,
1711	0x61, 0x73, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x11,
1712	0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
1713	0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1714	0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6c, 0x61, 0x73,
1715	0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x06,
1716	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
1717	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e,
1718	0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
1719	0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
1720	0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1721	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76,
1722	0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12,
1723	0x3a, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x15, 0x20, 0x01,
1724	0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
1725	0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65,
1726	0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x08, 0x6d,
1727	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e,
1728	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74,
1729	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64,
1730	0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
1731	0x74, 0x61, 0x12, 0x49, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f,
1732	0x6e, 0x66, 0x69, 0x67, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f,
1733	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31,
1734	0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d,
1735	0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x3b, 0x0a,
1736	0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
1737	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
1738	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
1739	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x73, 0xea, 0x41, 0x70, 0x0a,
1740	0x1e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x69, 0x6f, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1741	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12,
1742	0x4e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
1743	0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c,
1744	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
1745	0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x7d, 0x2f, 0x64,
1746	0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x22,
1747	0xbe, 0x02, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69,
1748	0x67, 0x12, 0x43, 0x0a, 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70,
1749	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1750	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61,
1751	0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77,
1752	0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
1753	0x79, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20,
1754	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
1755	0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
1756	0x79, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x11, 0x67, 0x61, 0x74,
1757	0x65, 0x77, 0x61, 0x79, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x37,
1758	0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f,
1759	0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
1760	0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x47, 0x61,
1761	0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f,
1762	0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
1763	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
1764	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
1765	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x63,
1766	0x65, 0x73, 0x73, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65,
1767	0x22, 0xfb, 0x04, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73,
1768	0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
1769	0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
1770	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6a, 0x0a, 0x1a, 0x65, 0x76, 0x65, 0x6e, 0x74,
1771	0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f,
1772	0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f,
1773	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76,
1774	0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
1775	0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x18, 0x65, 0x76, 0x65, 0x6e, 0x74,
1776	0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
1777	0x69, 0x67, 0x73, 0x12, 0x68, 0x0a, 0x19, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x74,
1778	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
1779	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1780	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61,
1781	0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
1782	0x6e, 0x66, 0x69, 0x67, 0x52, 0x17, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66,
1783	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a,
1784	0x0b, 0x6d, 0x71, 0x74, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01,
1785	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
1786	0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x71, 0x74, 0x74, 0x43, 0x6f, 0x6e,
1787	0x66, 0x69, 0x67, 0x52, 0x0a, 0x6d, 0x71, 0x74, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
1788	0x40, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09,
1789	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1790	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43,
1791	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69,
1792	0x67, 0x12, 0x3a, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0b,
1793	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1794	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65,
1795	0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x49, 0x0a,
1796	0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03,
1797	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
1798	0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
1799	0x79, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65,
1800	0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x3a, 0x64, 0xea, 0x41, 0x61, 0x0a, 0x20, 0x63,
1801	0x6c, 0x6f, 0x75, 0x64, 0x69, 0x6f, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
1802	0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12,
1803	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
1804	0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c,
1805	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
1806	0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x7d, 0x22, 0x5a,
1807	0x0a, 0x0a, 0x4d, 0x71, 0x74, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x12,
1808	0x6d, 0x71, 0x74, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61,
1809	0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1810	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
1811	0x71, 0x74, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x10, 0x6d, 0x71, 0x74, 0x74, 0x45, 0x6e,
1812	0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x5a, 0x0a, 0x0a, 0x48, 0x74,
1813	0x74, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70,
1814	0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01,
1815	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1816	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x53,
1817	0x74, 0x61, 0x74, 0x65, 0x52, 0x10, 0x68, 0x74, 0x74, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
1818	0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x17, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e,
1819	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
1820	0x67, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x6d,
1821	0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x75,
1822	0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x2a,
1823	0x0a, 0x11, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6e,
1824	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x75, 0x62, 0x73, 0x75,
1825	0x62, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x17, 0x53, 0x74,
1826	0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43,
1827	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f,
1828	0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
1829	0x52, 0x0f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4e, 0x61, 0x6d,
1830	0x65, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x43, 0x72,
1831	0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x61, 0x0a, 0x16, 0x70, 0x75, 0x62, 0x6c,
1832	0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
1833	0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1834	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50,
1835	0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
1836	0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
1837	0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x63,
1838	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x9b, 0x02, 0x0a, 0x16, 0x58, 0x35,
1839	0x30, 0x39, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74,
1840	0x61, 0x69, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01,
1841	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07,
1842	0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
1843	0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
1844	0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
1845	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
1846	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
1847	0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65,
1848	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1849	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
1850	0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f,
1851	0x0a, 0x13, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x6c, 0x67, 0x6f,
1852	0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x69, 0x67,
1853	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12,
1854	0x26, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79,
1855	0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
1856	0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x14, 0x50, 0x75, 0x62, 0x6c,
1857	0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
1858	0x12, 0x47, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
1859	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
1860	0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
1861	0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61,
1862	0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72,
1863	0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
1864	0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x0c, 0x78,
1865	0x35, 0x30, 0x39, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
1866	0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
1867	0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x43, 0x65, 0x72, 0x74,
1868	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0b,
1869	0x78, 0x35, 0x30, 0x39, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x10,
1870	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
1871	0x12, 0x49, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02,
1872	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1873	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69,
1874	0x63, 0x4b, 0x65, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00,
1875	0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x0f, 0x65,
1876	0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06,
1877	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
1878	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
1879	0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
1880	0x42, 0x0c, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x65,
1881	0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65,
1882	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18,
1883	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
1884	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c,
1885	0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72,
1886	0x6d, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
1887	0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xd5, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
1888	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
1889	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
1890	0x12, 0x46, 0x0a, 0x11, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
1891	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
1892	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
1893	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70,
1894	0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69,
1895	0x63, 0x65, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
1896	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1897	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x64,
1898	0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
1899	0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28,
1900	0x0c, 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x6b, 0x0a,
1901	0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b,
1902	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
1903	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1904	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75,
1905	0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x69, 0x6e,
1906	0x61, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a,
1907	0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x2a, 0x4c, 0x0a, 0x09, 0x4d, 0x71,
1908	0x74, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x51, 0x54, 0x54, 0x5f,
1909	0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
1910	0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x51, 0x54, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42,
1911	0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x51, 0x54, 0x54, 0x5f, 0x44, 0x49,
1912	0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x4c, 0x0a, 0x09, 0x48, 0x74, 0x74, 0x70,
1913	0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x53, 0x54,
1914	0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
1915	0x00, 0x12, 0x10, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45,
1916	0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x44, 0x49, 0x53, 0x41,
1917	0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x4f, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76,
1918	0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
1919	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a,
1920	0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x0a, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52,
1921	0x10, 0x14, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x1e, 0x12, 0x09, 0x0a, 0x05,
1922	0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x28, 0x2a, 0x49, 0x0a, 0x0b, 0x47, 0x61, 0x74, 0x65, 0x77,
1923	0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41,
1924	0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
1925	0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10,
1926	0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59,
1927	0x10, 0x02, 0x2a, 0x91, 0x01, 0x0a, 0x11, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x75,
1928	0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x47, 0x41, 0x54, 0x45,
1929	0x57, 0x41, 0x59, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f,
1930	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a,
1931	0x10, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x4e, 0x4c,
1932	0x59, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x55,
1933	0x54, 0x48, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12,
1934	0x25, 0x0a, 0x21, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41,
1935	0x4e, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54,
1936	0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x03, 0x2a, 0x65, 0x0a, 0x1a, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
1937	0x4b, 0x65, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x6f,
1938	0x72, 0x6d, 0x61, 0x74, 0x12, 0x2d, 0x0a, 0x29, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
1939	0x49, 0x45, 0x44, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x43,
1940	0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41,
1941	0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x58, 0x35, 0x30, 0x39, 0x5f, 0x43, 0x45, 0x52, 0x54,
1942	0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4d, 0x10, 0x01, 0x2a, 0x76, 0x0a,
1943	0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
1944	0x12, 0x21, 0x0a, 0x1d, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f,
1945	0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41,
1946	0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x45, 0x4d, 0x10, 0x03,
1947	0x12, 0x10, 0x0a, 0x0c, 0x52, 0x53, 0x41, 0x5f, 0x58, 0x35, 0x30, 0x39, 0x5f, 0x50, 0x45, 0x4d,
1948	0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x50, 0x45, 0x4d, 0x10,
1949	0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x58, 0x35, 0x30, 0x39, 0x5f,
1950	0x50, 0x45, 0x4d, 0x10, 0x04, 0x42, 0x66, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f,
1951	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31,
1952	0x42, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
1953	0x50, 0x01, 0x5a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
1954	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,
1955	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f,
1956	0x69, 0x6f, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6f, 0x74, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70,
1957	0x72, 0x6f, 0x74, 0x6f, 0x33,
1958}
1959
1960var (
1961	file_google_cloud_iot_v1_resources_proto_rawDescOnce sync.Once
1962	file_google_cloud_iot_v1_resources_proto_rawDescData = file_google_cloud_iot_v1_resources_proto_rawDesc
1963)
1964
1965func file_google_cloud_iot_v1_resources_proto_rawDescGZIP() []byte {
1966	file_google_cloud_iot_v1_resources_proto_rawDescOnce.Do(func() {
1967		file_google_cloud_iot_v1_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_iot_v1_resources_proto_rawDescData)
1968	})
1969	return file_google_cloud_iot_v1_resources_proto_rawDescData
1970}
1971
1972var file_google_cloud_iot_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
1973var file_google_cloud_iot_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
1974var file_google_cloud_iot_v1_resources_proto_goTypes = []interface{}{
1975	(MqttState)(0),                  // 0: google.cloud.iot.v1.MqttState
1976	(HttpState)(0),                  // 1: google.cloud.iot.v1.HttpState
1977	(LogLevel)(0),                   // 2: google.cloud.iot.v1.LogLevel
1978	(GatewayType)(0),                // 3: google.cloud.iot.v1.GatewayType
1979	(GatewayAuthMethod)(0),          // 4: google.cloud.iot.v1.GatewayAuthMethod
1980	(PublicKeyCertificateFormat)(0), // 5: google.cloud.iot.v1.PublicKeyCertificateFormat
1981	(PublicKeyFormat)(0),            // 6: google.cloud.iot.v1.PublicKeyFormat
1982	(*Device)(nil),                  // 7: google.cloud.iot.v1.Device
1983	(*GatewayConfig)(nil),           // 8: google.cloud.iot.v1.GatewayConfig
1984	(*DeviceRegistry)(nil),          // 9: google.cloud.iot.v1.DeviceRegistry
1985	(*MqttConfig)(nil),              // 10: google.cloud.iot.v1.MqttConfig
1986	(*HttpConfig)(nil),              // 11: google.cloud.iot.v1.HttpConfig
1987	(*EventNotificationConfig)(nil), // 12: google.cloud.iot.v1.EventNotificationConfig
1988	(*StateNotificationConfig)(nil), // 13: google.cloud.iot.v1.StateNotificationConfig
1989	(*RegistryCredential)(nil),      // 14: google.cloud.iot.v1.RegistryCredential
1990	(*X509CertificateDetails)(nil),  // 15: google.cloud.iot.v1.X509CertificateDetails
1991	(*PublicKeyCertificate)(nil),    // 16: google.cloud.iot.v1.PublicKeyCertificate
1992	(*DeviceCredential)(nil),        // 17: google.cloud.iot.v1.DeviceCredential
1993	(*PublicKeyCredential)(nil),     // 18: google.cloud.iot.v1.PublicKeyCredential
1994	(*DeviceConfig)(nil),            // 19: google.cloud.iot.v1.DeviceConfig
1995	(*DeviceState)(nil),             // 20: google.cloud.iot.v1.DeviceState
1996	nil,                             // 21: google.cloud.iot.v1.Device.MetadataEntry
1997	(*timestamp.Timestamp)(nil),     // 22: google.protobuf.Timestamp
1998	(*status.Status)(nil),           // 23: google.rpc.Status
1999}
2000var file_google_cloud_iot_v1_resources_proto_depIdxs = []int32{
2001	17, // 0: google.cloud.iot.v1.Device.credentials:type_name -> google.cloud.iot.v1.DeviceCredential
2002	22, // 1: google.cloud.iot.v1.Device.last_heartbeat_time:type_name -> google.protobuf.Timestamp
2003	22, // 2: google.cloud.iot.v1.Device.last_event_time:type_name -> google.protobuf.Timestamp
2004	22, // 3: google.cloud.iot.v1.Device.last_state_time:type_name -> google.protobuf.Timestamp
2005	22, // 4: google.cloud.iot.v1.Device.last_config_ack_time:type_name -> google.protobuf.Timestamp
2006	22, // 5: google.cloud.iot.v1.Device.last_config_send_time:type_name -> google.protobuf.Timestamp
2007	22, // 6: google.cloud.iot.v1.Device.last_error_time:type_name -> google.protobuf.Timestamp
2008	23, // 7: google.cloud.iot.v1.Device.last_error_status:type_name -> google.rpc.Status
2009	19, // 8: google.cloud.iot.v1.Device.config:type_name -> google.cloud.iot.v1.DeviceConfig
2010	20, // 9: google.cloud.iot.v1.Device.state:type_name -> google.cloud.iot.v1.DeviceState
2011	2,  // 10: google.cloud.iot.v1.Device.log_level:type_name -> google.cloud.iot.v1.LogLevel
2012	21, // 11: google.cloud.iot.v1.Device.metadata:type_name -> google.cloud.iot.v1.Device.MetadataEntry
2013	8,  // 12: google.cloud.iot.v1.Device.gateway_config:type_name -> google.cloud.iot.v1.GatewayConfig
2014	3,  // 13: google.cloud.iot.v1.GatewayConfig.gateway_type:type_name -> google.cloud.iot.v1.GatewayType
2015	4,  // 14: google.cloud.iot.v1.GatewayConfig.gateway_auth_method:type_name -> google.cloud.iot.v1.GatewayAuthMethod
2016	22, // 15: google.cloud.iot.v1.GatewayConfig.last_accessed_gateway_time:type_name -> google.protobuf.Timestamp
2017	12, // 16: google.cloud.iot.v1.DeviceRegistry.event_notification_configs:type_name -> google.cloud.iot.v1.EventNotificationConfig
2018	13, // 17: google.cloud.iot.v1.DeviceRegistry.state_notification_config:type_name -> google.cloud.iot.v1.StateNotificationConfig
2019	10, // 18: google.cloud.iot.v1.DeviceRegistry.mqtt_config:type_name -> google.cloud.iot.v1.MqttConfig
2020	11, // 19: google.cloud.iot.v1.DeviceRegistry.http_config:type_name -> google.cloud.iot.v1.HttpConfig
2021	2,  // 20: google.cloud.iot.v1.DeviceRegistry.log_level:type_name -> google.cloud.iot.v1.LogLevel
2022	14, // 21: google.cloud.iot.v1.DeviceRegistry.credentials:type_name -> google.cloud.iot.v1.RegistryCredential
2023	0,  // 22: google.cloud.iot.v1.MqttConfig.mqtt_enabled_state:type_name -> google.cloud.iot.v1.MqttState
2024	1,  // 23: google.cloud.iot.v1.HttpConfig.http_enabled_state:type_name -> google.cloud.iot.v1.HttpState
2025	16, // 24: google.cloud.iot.v1.RegistryCredential.public_key_certificate:type_name -> google.cloud.iot.v1.PublicKeyCertificate
2026	22, // 25: google.cloud.iot.v1.X509CertificateDetails.start_time:type_name -> google.protobuf.Timestamp
2027	22, // 26: google.cloud.iot.v1.X509CertificateDetails.expiry_time:type_name -> google.protobuf.Timestamp
2028	5,  // 27: google.cloud.iot.v1.PublicKeyCertificate.format:type_name -> google.cloud.iot.v1.PublicKeyCertificateFormat
2029	15, // 28: google.cloud.iot.v1.PublicKeyCertificate.x509_details:type_name -> google.cloud.iot.v1.X509CertificateDetails
2030	18, // 29: google.cloud.iot.v1.DeviceCredential.public_key:type_name -> google.cloud.iot.v1.PublicKeyCredential
2031	22, // 30: google.cloud.iot.v1.DeviceCredential.expiration_time:type_name -> google.protobuf.Timestamp
2032	6,  // 31: google.cloud.iot.v1.PublicKeyCredential.format:type_name -> google.cloud.iot.v1.PublicKeyFormat
2033	22, // 32: google.cloud.iot.v1.DeviceConfig.cloud_update_time:type_name -> google.protobuf.Timestamp
2034	22, // 33: google.cloud.iot.v1.DeviceConfig.device_ack_time:type_name -> google.protobuf.Timestamp
2035	22, // 34: google.cloud.iot.v1.DeviceState.update_time:type_name -> google.protobuf.Timestamp
2036	35, // [35:35] is the sub-list for method output_type
2037	35, // [35:35] is the sub-list for method input_type
2038	35, // [35:35] is the sub-list for extension type_name
2039	35, // [35:35] is the sub-list for extension extendee
2040	0,  // [0:35] is the sub-list for field type_name
2041}
2042
2043func init() { file_google_cloud_iot_v1_resources_proto_init() }
2044func file_google_cloud_iot_v1_resources_proto_init() {
2045	if File_google_cloud_iot_v1_resources_proto != nil {
2046		return
2047	}
2048	if !protoimpl.UnsafeEnabled {
2049		file_google_cloud_iot_v1_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
2050			switch v := v.(*Device); i {
2051			case 0:
2052				return &v.state
2053			case 1:
2054				return &v.sizeCache
2055			case 2:
2056				return &v.unknownFields
2057			default:
2058				return nil
2059			}
2060		}
2061		file_google_cloud_iot_v1_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
2062			switch v := v.(*GatewayConfig); i {
2063			case 0:
2064				return &v.state
2065			case 1:
2066				return &v.sizeCache
2067			case 2:
2068				return &v.unknownFields
2069			default:
2070				return nil
2071			}
2072		}
2073		file_google_cloud_iot_v1_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
2074			switch v := v.(*DeviceRegistry); i {
2075			case 0:
2076				return &v.state
2077			case 1:
2078				return &v.sizeCache
2079			case 2:
2080				return &v.unknownFields
2081			default:
2082				return nil
2083			}
2084		}
2085		file_google_cloud_iot_v1_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
2086			switch v := v.(*MqttConfig); i {
2087			case 0:
2088				return &v.state
2089			case 1:
2090				return &v.sizeCache
2091			case 2:
2092				return &v.unknownFields
2093			default:
2094				return nil
2095			}
2096		}
2097		file_google_cloud_iot_v1_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
2098			switch v := v.(*HttpConfig); i {
2099			case 0:
2100				return &v.state
2101			case 1:
2102				return &v.sizeCache
2103			case 2:
2104				return &v.unknownFields
2105			default:
2106				return nil
2107			}
2108		}
2109		file_google_cloud_iot_v1_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
2110			switch v := v.(*EventNotificationConfig); i {
2111			case 0:
2112				return &v.state
2113			case 1:
2114				return &v.sizeCache
2115			case 2:
2116				return &v.unknownFields
2117			default:
2118				return nil
2119			}
2120		}
2121		file_google_cloud_iot_v1_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
2122			switch v := v.(*StateNotificationConfig); i {
2123			case 0:
2124				return &v.state
2125			case 1:
2126				return &v.sizeCache
2127			case 2:
2128				return &v.unknownFields
2129			default:
2130				return nil
2131			}
2132		}
2133		file_google_cloud_iot_v1_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
2134			switch v := v.(*RegistryCredential); i {
2135			case 0:
2136				return &v.state
2137			case 1:
2138				return &v.sizeCache
2139			case 2:
2140				return &v.unknownFields
2141			default:
2142				return nil
2143			}
2144		}
2145		file_google_cloud_iot_v1_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
2146			switch v := v.(*X509CertificateDetails); i {
2147			case 0:
2148				return &v.state
2149			case 1:
2150				return &v.sizeCache
2151			case 2:
2152				return &v.unknownFields
2153			default:
2154				return nil
2155			}
2156		}
2157		file_google_cloud_iot_v1_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
2158			switch v := v.(*PublicKeyCertificate); i {
2159			case 0:
2160				return &v.state
2161			case 1:
2162				return &v.sizeCache
2163			case 2:
2164				return &v.unknownFields
2165			default:
2166				return nil
2167			}
2168		}
2169		file_google_cloud_iot_v1_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
2170			switch v := v.(*DeviceCredential); i {
2171			case 0:
2172				return &v.state
2173			case 1:
2174				return &v.sizeCache
2175			case 2:
2176				return &v.unknownFields
2177			default:
2178				return nil
2179			}
2180		}
2181		file_google_cloud_iot_v1_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
2182			switch v := v.(*PublicKeyCredential); i {
2183			case 0:
2184				return &v.state
2185			case 1:
2186				return &v.sizeCache
2187			case 2:
2188				return &v.unknownFields
2189			default:
2190				return nil
2191			}
2192		}
2193		file_google_cloud_iot_v1_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
2194			switch v := v.(*DeviceConfig); i {
2195			case 0:
2196				return &v.state
2197			case 1:
2198				return &v.sizeCache
2199			case 2:
2200				return &v.unknownFields
2201			default:
2202				return nil
2203			}
2204		}
2205		file_google_cloud_iot_v1_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
2206			switch v := v.(*DeviceState); i {
2207			case 0:
2208				return &v.state
2209			case 1:
2210				return &v.sizeCache
2211			case 2:
2212				return &v.unknownFields
2213			default:
2214				return nil
2215			}
2216		}
2217	}
2218	file_google_cloud_iot_v1_resources_proto_msgTypes[7].OneofWrappers = []interface{}{
2219		(*RegistryCredential_PublicKeyCertificate)(nil),
2220	}
2221	file_google_cloud_iot_v1_resources_proto_msgTypes[10].OneofWrappers = []interface{}{
2222		(*DeviceCredential_PublicKey)(nil),
2223	}
2224	type x struct{}
2225	out := protoimpl.TypeBuilder{
2226		File: protoimpl.DescBuilder{
2227			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2228			RawDescriptor: file_google_cloud_iot_v1_resources_proto_rawDesc,
2229			NumEnums:      7,
2230			NumMessages:   15,
2231			NumExtensions: 0,
2232			NumServices:   0,
2233		},
2234		GoTypes:           file_google_cloud_iot_v1_resources_proto_goTypes,
2235		DependencyIndexes: file_google_cloud_iot_v1_resources_proto_depIdxs,
2236		EnumInfos:         file_google_cloud_iot_v1_resources_proto_enumTypes,
2237		MessageInfos:      file_google_cloud_iot_v1_resources_proto_msgTypes,
2238	}.Build()
2239	File_google_cloud_iot_v1_resources_proto = out.File
2240	file_google_cloud_iot_v1_resources_proto_rawDesc = nil
2241	file_google_cloud_iot_v1_resources_proto_goTypes = nil
2242	file_google_cloud_iot_v1_resources_proto_depIdxs = nil
2243}
2244