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