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