@kusinta/iot-schema 0.2.0-beta.41 → 0.2.0-beta.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kusinta/iot-schema",
3
- "version": "0.2.0-beta.41",
3
+ "version": "0.2.0-beta.42",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "files": ["src"],
@@ -6,9 +6,10 @@ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"
6
6
  import type { Message } from "@bufbuild/protobuf";
7
7
  import type { ConnectorId, DeviceId, GatewayId } from "../../identity/v1/identity_pb.js";
8
8
  import type { BackendFailureReason, BackendHealth, ConnectorKind, ConnectorTransport } from "../../common/v1/types_pb.js";
9
+ import type { LinkedService } from "../../accountlink/v1/account_link_pb.js";
10
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
9
11
  import type { Device } from "../../device/v1/device_pb.js";
10
12
  import type { DeviceLink, LinkFunction, LinkState } from "../../link/v1/link_pb.js";
11
- import type { Timestamp } from "@bufbuild/protobuf/wkt";
12
13
  import type { AttributeWriteRequest, CommandError, DeviceCommand } from "../../webrtc/v1/command_pb.js";
13
14
  import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
14
15
  import type { PropertyUpdateBatch } from "../../device/v1/property_update_pb.js";
@@ -117,6 +118,23 @@ export declare type ConnectorInfo = Message<"kusinta.iot.connector.v1.ConnectorI
117
118
  * @generated from field: bool supports_backend_reinitialize = 12;
118
119
  */
119
120
  supportsBackendReinitialize: boolean;
121
+
122
+ /**
123
+ * The linked services (accountlink.v1) whose accounts this connector reads devices from,
124
+ * with access tokens the gateway hands it (CredentialsUpdate). Declaring a service asks
125
+ * for its tokens; it does not earn them. The gateway sends a service's tokens only to a
126
+ * connector_id it trusts for that service, only after accepting its handshake, and to
127
+ * one live session at a time: a second session claiming the same service gets none, and
128
+ * a session that ends loses its links with it. Trust is the gateway's own setting, made
129
+ * by its administrators, naming the connector_id per service; with none made for a
130
+ * service, the gateway sends its tokens to no connector. A connector_id counts only on a
131
+ * session the gateway's transport authenticated as that connector (a local socket only
132
+ * the gateway's connectors can open, or mutual TLS); claimed in a handshake alone, it
133
+ * earns nothing.
134
+ *
135
+ * @generated from field: repeated kusinta.iot.accountlink.v1.LinkedService consumes_credentials = 13;
136
+ */
137
+ consumesCredentials: LinkedService[];
120
138
  };
121
139
 
122
140
  /**
@@ -125,6 +143,116 @@ export declare type ConnectorInfo = Message<"kusinta.iot.connector.v1.ConnectorI
125
143
  */
126
144
  export declare const ConnectorInfoSchema: GenMessage<ConnectorInfo>;
127
145
 
146
+ /**
147
+ * An access token for one account link (accountlink.v1): one home's grant at a third-party
148
+ * service, handed to the connector that reads that home's devices there. The gateway holds
149
+ * the token pair and refreshes it; only the short-lived access token crosses, never a
150
+ * refresh token or a client secret. Neither side writes it to disk or a log, nor puts it in
151
+ * BackendHealthReport.detail or an error message, and the connector sends it nowhere but
152
+ * in calls to that service's own API.
153
+ *
154
+ * Sent after every refresh, at least five minutes before the previous token's expires_at,
155
+ * and for a link made while the session is up. After a handshake, every live link arrives
156
+ * in one CredentialsSnapshot instead.
157
+ *
158
+ * Once expires_at plus 60 seconds of clock skew passes without a newer token, or the
159
+ * service refuses a live token as unauthorised (revoked at the service), the connector
160
+ * stops reading the link and reports the link's devices unreachable, the way it reports any
161
+ * unreachable device, until an update arrives. That is the link's state, not the backend's:
162
+ * it does not put the backend in doubt or report it failing, and a connector with no live
163
+ * link reports its backend OK.
164
+ *
165
+ * An update may carry another account's grant under the same id (the home linked again,
166
+ * replaced its link, or relinked after the old grant lapsed). The connector reads with it
167
+ * from then on and removes the link's devices the account no longer has (DeviceRemoval);
168
+ * the devices it still has keep their ids.
169
+ *
170
+ * @generated from message kusinta.iot.connector.v1.CredentialsUpdate
171
+ */
172
+ export declare type CredentialsUpdate = Message<"kusinta.iot.connector.v1.CredentialsUpdate"> & {
173
+ /**
174
+ * Opaque; it names no home, person or account. Stable for one home and service for as
175
+ * long as the home has that service linked: replacing the link, relinking after it
176
+ * needed relinking, or a cancelled replacement arrives as an update under the same id, so
177
+ * a device read through it keeps its id and its history. A link made after the old one
178
+ * ended (unlinked, or the home handed over or wiped) has a new id, so nothing of the
179
+ * previous household's carries over. The gateway revokes a replaced
180
+ * grant at the service itself. A device read through two links, as when two homes link
181
+ * one account, has a distinct id per link. Not related to a device link's id
182
+ * (CreateLink).
183
+ *
184
+ * @generated from field: string account_link_id = 1;
185
+ */
186
+ accountLinkId: string;
187
+
188
+ /**
189
+ * @generated from field: kusinta.iot.accountlink.v1.LinkedService service = 2;
190
+ */
191
+ service: LinkedService;
192
+
193
+ /**
194
+ * @generated from field: string access_token = 3;
195
+ */
196
+ accessToken: string;
197
+
198
+ /**
199
+ * Always set. When the service states no lifetime, the gateway states one of at most an
200
+ * hour.
201
+ *
202
+ * @generated from field: google.protobuf.Timestamp expires_at = 4;
203
+ */
204
+ expiresAt?: Timestamp | undefined;
205
+ };
206
+
207
+ /**
208
+ * Describes the message kusinta.iot.connector.v1.CredentialsUpdate.
209
+ * Use `create(CredentialsUpdateSchema)` to create a new message.
210
+ */
211
+ export declare const CredentialsUpdateSchema: GenMessage<CredentialsUpdate>;
212
+
213
+ /**
214
+ * Every live account link for the services this connector declares, sent once after each
215
+ * accepted handshake and before any CredentialsUpdate on that session. Empty when there
216
+ * are none. The connector drops every link it knows that is not listed, removing its
217
+ * devices (DeviceRemoval), so a link that ended while the connector was away does not
218
+ * survive the reconnect.
219
+ *
220
+ * @generated from message kusinta.iot.connector.v1.CredentialsSnapshot
221
+ */
222
+ export declare type CredentialsSnapshot = Message<"kusinta.iot.connector.v1.CredentialsSnapshot"> & {
223
+ /**
224
+ * @generated from field: repeated kusinta.iot.connector.v1.CredentialsUpdate links = 1;
225
+ */
226
+ links: CredentialsUpdate[];
227
+ };
228
+
229
+ /**
230
+ * Describes the message kusinta.iot.connector.v1.CredentialsSnapshot.
231
+ * Use `create(CredentialsSnapshotSchema)` to create a new message.
232
+ */
233
+ export declare const CredentialsSnapshotSchema: GenMessage<CredentialsSnapshot>;
234
+
235
+ /**
236
+ * An account link ended: unlinked, its home handed over, or wiped. Not sent for a
237
+ * replacement, which is an update under the same id. Sent before the gateway revokes the
238
+ * grant at the service. The connector drops the token at once, stops
239
+ * reading the link and removes its devices (DeviceRemoval).
240
+ *
241
+ * @generated from message kusinta.iot.connector.v1.CredentialsRevoked
242
+ */
243
+ export declare type CredentialsRevoked = Message<"kusinta.iot.connector.v1.CredentialsRevoked"> & {
244
+ /**
245
+ * @generated from field: string account_link_id = 1;
246
+ */
247
+ accountLinkId: string;
248
+ };
249
+
250
+ /**
251
+ * Describes the message kusinta.iot.connector.v1.CredentialsRevoked.
252
+ * Use `create(CredentialsRevokedSchema)` to create a new message.
253
+ */
254
+ export declare const CredentialsRevokedSchema: GenMessage<CredentialsRevoked>;
255
+
128
256
  /**
129
257
  * @generated from message kusinta.iot.connector.v1.ConnectorHandshake
130
258
  */
@@ -182,6 +310,18 @@ export declare type ConnectorHandshake = Message<"kusinta.iot.connector.v1.Conne
182
310
  * @generated from field: kusinta.iot.connector.v1.BackendHealthReport backend_health = 4;
183
311
  */
184
312
  backendHealth?: BackendHealthReport | undefined;
313
+
314
+ /**
315
+ * For each device in known_devices read through an account link, that link's
316
+ * account_link_id, keyed by the device's id: the handshake's form of
317
+ * DeviceAnnouncement.account_link_id, so a reconnecting connector's linked devices are
318
+ * filed in their homes again. A known device absent here is read through no link. The
319
+ * map only restores a filing the gateway already recorded for that device and link, and
320
+ * only for a link it is sending this session; it never files a device anew.
321
+ *
322
+ * @generated from field: map<string, string> known_device_account_links = 5;
323
+ */
324
+ knownDeviceAccountLinks: { [key: string]: string };
185
325
  };
186
326
 
187
327
  /**
@@ -531,6 +671,15 @@ export declare type HandshakeAck = Message<"kusinta.iot.connector.v1.HandshakeAc
531
671
  * @generated from field: bool supports_backend_health = 4;
532
672
  */
533
673
  supportsBackendHealth: boolean;
674
+
675
+ /**
676
+ * The gateway sends account link tokens (CredentialsSnapshot, CredentialsUpdate) to a
677
+ * connector that declares ConnectorInfo.consumes_credentials and that it trusts for the
678
+ * service. Unset, no token will arrive on this session; the connector reads no link.
679
+ *
680
+ * @generated from field: bool sends_credentials = 5;
681
+ */
682
+ sendsCredentials: boolean;
534
683
  };
535
684
 
536
685
  /**
@@ -573,6 +722,19 @@ export declare type DeviceAnnouncement = Message<"kusinta.iot.connector.v1.Devic
573
722
  * @generated from field: string pairing_request_id = 3;
574
723
  */
575
724
  pairingRequestId: string;
725
+
726
+ /**
727
+ * The account link (CredentialsUpdate) the device is read through, empty for a device
728
+ * that is not. The gateway files the device in that link's home and nowhere else, and
729
+ * accepts only an id it sent this session and has not revoked; a device naming any other
730
+ * is filed in no home, and the gateway logs the mismatch. A
731
+ * device read through two links, as when two homes link the same account, is announced
732
+ * once per link under distinct device ids, each in its own home; revoking one link
733
+ * removes only that link's.
734
+ *
735
+ * @generated from field: string account_link_id = 4;
736
+ */
737
+ accountLinkId: string;
576
738
  };
577
739
 
578
740
  /**
@@ -1081,6 +1243,26 @@ export declare type SessionResponse = Message<"kusinta.iot.connector.v1.SessionR
1081
1243
  */
1082
1244
  value: ReinitializeBackend;
1083
1245
  case: "reinitializeBackend";
1246
+ } | {
1247
+ /**
1248
+ * A linked account's access token, and its end; see CredentialsUpdate.
1249
+ *
1250
+ * @generated from field: kusinta.iot.connector.v1.CredentialsUpdate credentials_update = 15;
1251
+ */
1252
+ value: CredentialsUpdate;
1253
+ case: "credentialsUpdate";
1254
+ } | {
1255
+ /**
1256
+ * @generated from field: kusinta.iot.connector.v1.CredentialsRevoked credentials_revoked = 16;
1257
+ */
1258
+ value: CredentialsRevoked;
1259
+ case: "credentialsRevoked";
1260
+ } | {
1261
+ /**
1262
+ * @generated from field: kusinta.iot.connector.v1.CredentialsSnapshot credentials_snapshot = 17;
1263
+ */
1264
+ value: CredentialsSnapshot;
1265
+ case: "credentialsSnapshot";
1084
1266
  } | { case: undefined; value?: undefined };
1085
1267
  };
1086
1268
 
@@ -4,6 +4,7 @@
4
4
 
5
5
  import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
+ import { file_kusinta_iot_accountlink_v1_account_link } from "../../accountlink/v1/account_link_pb.js";
7
8
  import { file_kusinta_iot_common_v1_pairing } from "../../common/v1/pairing_pb.js";
8
9
  import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
9
10
  import { file_kusinta_iot_device_v1_device } from "../../device/v1/device_pb.js";
@@ -17,7 +18,7 @@ import { file_kusinta_iot_webrtc_v1_command } from "../../webrtc/v1/command_pb.j
17
18
  * Describes the file kusinta/iot/connector/v1/connector.proto.
18
19
  */
19
20
  export const file_kusinta_iot_connector_v1_connector = /*@__PURE__*/
20
- fileDesc("CihrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yLnByb3RvEhhrdXNpbnRhLmlvdC5jb25uZWN0b3IudjEipQMKDUNvbm5lY3RvckluZm8SOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSPAoJdHJhbnNwb3J0GAQgASgOMikua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvclRyYW5zcG9ydBIQCghlbmRwb2ludBgFIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAYgAygNEhgKEHN1cHBvcnRzX3BhaXJpbmcYByABKAgSHQoVc3VwcG9ydHNfcHJvdmlzaW9uaW5nGAggASgIEhUKDWJyb2tlcnNfbGlua3MYCSABKAgSMgoEa2luZBgKIAEoDjIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5Db25uZWN0b3JLaW5kEhMKC2Rlc2NyaXB0aW9uGAsgASgJEiUKHXN1cHBvcnRzX2JhY2tlbmRfcmVpbml0aWFsaXplGAwgASgIIv4BChJDb25uZWN0b3JIYW5kc2hha2USNQoEaW5mbxgBIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JJbmZvEjQKDWtub3duX2RldmljZXMYAiADKAsyHS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlEjQKC2tub3duX2xpbmtzGAMgAygLMh8ua3VzaW50YS5pb3QubGluay52MS5EZXZpY2VMaW5rEkUKDmJhY2tlbmRfaGVhbHRoGAQgASgLMi0ua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkJhY2tlbmRIZWFsdGhSZXBvcnQiWwoTQmFja2VuZEhlYWx0aFJlcG9ydBI0CgZoZWFsdGgYASABKAsyJC5rdXNpbnRhLmlvdC5jb21tb24udjEuQmFja2VuZEhlYWx0aBIOCgZkZXRhaWwYAiABKAkiKQoTUmVpbml0aWFsaXplQmFja2VuZBISCgpyZXF1ZXN0X2lkGAEgASgJIrwBChlSZWluaXRpYWxpemVCYWNrZW5kUmVzdWx0EhIKCnJlcXVlc3RfaWQYASABKAkSPgoHb3V0Y29tZRgCIAEoDjItLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5SZWluaXRpYWxpemVPdXRjb21lEjsKBnJlYXNvbhgDIAEoDjIrLmt1c2ludGEuaW90LmNvbW1vbi52MS5CYWNrZW5kRmFpbHVyZVJlYXNvbhIOCgZkZXRhaWwYBCABKAkiugEKCkNyZWF0ZUxpbmsSDwoHbGlua19pZBgBIAEoCRIxCgZzZW5kZXIYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAQgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24iugEKClJlbW92ZUxpbmsSDwoHbGlua19pZBgBIAEoCRIxCgZzZW5kZXIYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAQgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24iQQoJTGlzdExpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIm0KCkxpbmtSZXN1bHQSDwoHbGlua19pZBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIEi0KBXN0YXRlGAMgASgOMh4ua3VzaW50YS5pb3QubGluay52MS5MaW5rU3RhdGUSDgoGZGV0YWlsGAQgASgJIj8KDUxpbmtzUmVwb3J0ZWQSLgoFbGlua3MYASADKAsyHy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmsiiQEKDEhhbmRzaGFrZUFjaxIQCghhY2NlcHRlZBgBIAEoCBIOCgZyZWFzb24YAiABKAkSNgoKZ2F0ZXdheV9pZBgDIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZBIfChdzdXBwb3J0c19iYWNrZW5kX2hlYWx0aBgEIAEoCCJxChJEZXZpY2VBbm5vdW5jZW1lbnQSLQoGZGV2aWNlGAIgASgLMh0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZRIaChJwYWlyaW5nX3JlcXVlc3RfaWQYAyABKAlKBAgBEAJSCmRlc2NyaXB0b3IiVQoNRGV2aWNlUmVtb3ZhbBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIOCgZyZWFzb24YAiABKAkiCwoJSGVhcnRCZWF0IkcKD1N1YnNjcmliZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChFVbnN1YnNjcmliZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJBCgxHYXRld2F5RXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhIKCnJlcXVlc3RfaWQYAyABKAki7QEKFkNvbm5lY3RvckNvbW1hbmRSZXN1bHQSEgoKcmVxdWVzdF9pZBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoFZXJyb3IYBSABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZEVycm9yEjMKCnNldHRsZXNfYnkYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX3NldHRsZXNfYnlKBAgDEAQiXAoQRW50ZXJQYWlyaW5nTW9kZRISCgpyZXF1ZXN0X2lkGAEgASgJEjQKBndpbmRvdxgCIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nV2luZG93IqMBChFQYWlyaW5nTW9kZVJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEhAKCGFjY2VwdGVkGAIgASgIEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbBIuCgpleHBpcmVzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJ8ChBQYWlyaW5nTW9kZUVuZGVkEhIKCnJlcXVlc3RfaWQYASABKAkSGgoSZGV2aWNlc19hdHRyaWJ1dGVkGAIgASgNEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCL2BwoOU2Vzc2lvblJlcXVlc3QSEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJBCgloYW5kc2hha2UYAyABKAsyLC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ29ubmVjdG9ySGFuZHNoYWtlSAASRQoPcHJvcGVydHlfdXBkYXRlGAQgASgLMioua3VzaW50YS5pb3QuZGV2aWNlLnYxLlByb3BlcnR5VXBkYXRlQmF0Y2hIABJIChBkZXZpY2VfYW5ub3VuY2VkGAUgASgLMiwua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkRldmljZUFubm91bmNlbWVudEgAEkEKDmRldmljZV9yZW1vdmVkGAYgASgLMicua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkRldmljZVJlbW92YWxIABJKCg5jb21tYW5kX3Jlc3VsdBgHIAEoCzIwLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JDb21tYW5kUmVzdWx0SAASOAoJaGVhcnRiZWF0GAggASgLMiMua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkhlYXJ0QmVhdEgAEkAKDWRldmljZV9ldmVudHMYCSABKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRXZlbnRCYXRjaEgAEkoKE3BhaXJpbmdfbW9kZV9yZXN1bHQYCiABKAsyKy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuUGFpcmluZ01vZGVSZXN1bHRIABJIChJwYWlyaW5nX21vZGVfZW5kZWQYCyABKAsyKi5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuUGFpcmluZ01vZGVFbmRlZEgAEjsKC2xpbmtfcmVzdWx0GAwgASgLMiQua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkxpbmtSZXN1bHRIABJBCg5saW5rc19yZXBvcnRlZBgNIAEoCzInLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5MaW5rc1JlcG9ydGVkSAASRwoOYmFja2VuZF9oZWFsdGgYDiABKAsyLS5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQmFja2VuZEhlYWx0aFJlcG9ydEgAEloKG3JlaW5pdGlhbGl6ZV9iYWNrZW5kX3Jlc3VsdBgPIAEoCzIzLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5SZWluaXRpYWxpemVCYWNrZW5kUmVzdWx0SABCCQoHcGF5bG9hZCLBBgoPU2Vzc2lvblJlc3BvbnNlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPwoNaGFuZHNoYWtlX2FjaxgDIAEoCzImLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5IYW5kc2hha2VBY2tIABI+CglzdWJzY3JpYmUYBSABKAsyKS5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuU3Vic2NyaWJlRGV2aWNlSAASQgoLdW5zdWJzY3JpYmUYBiABKAsyKy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuVW5zdWJzY3JpYmVEZXZpY2VIABI3CgVlcnJvchgHIAEoCzImLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5HYXRld2F5RXJyb3JIABI/Cg9leGVjdXRlX2NvbW1hbmQYCCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQ29tbWFuZEgAEk8KF2V4ZWN1dGVfYXR0cmlidXRlX3dyaXRlGAkgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkF0dHJpYnV0ZVdyaXRlUmVxdWVzdEgAEkgKEmVudGVyX3BhaXJpbmdfbW9kZRgKIAEoCzIqLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5FbnRlclBhaXJpbmdNb2RlSAASOwoLY3JlYXRlX2xpbmsYCyABKAsyJC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ3JlYXRlTGlua0gAEjsKC3JlbW92ZV9saW5rGAwgASgLMiQua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLlJlbW92ZUxpbmtIABI5CgpsaXN0X2xpbmtzGA0gASgLMiMua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkxpc3RMaW5rc0gAEk0KFHJlaW5pdGlhbGl6ZV9iYWNrZW5kGA4gASgLMi0ua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLlJlaW5pdGlhbGl6ZUJhY2tlbmRIAEIJCgdwYXlsb2FkSgQIBBAFKqMBChNSZWluaXRpYWxpemVPdXRjb21lEiQKIFJFSU5JVElBTElaRV9PVVRDT01FX1VOU1BFQ0lGSUVEEAASHQoZUkVJTklUSUFMSVpFX09VVENPTUVfRE9ORRABEh8KG1JFSU5JVElBTElaRV9PVVRDT01FX0ZBSUxFRBACEiYKIlJFSU5JVElBTElaRV9PVVRDT01FX05PVF9TVVBQT1JURUQQA0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_device_v1_property_update, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_webrtc_v1_command]);
21
+ fileDesc("CihrdXNpbnRhL2lvdC9jb25uZWN0b3IvdjEvY29ubmVjdG9yLnByb3RvEhhrdXNpbnRhLmlvdC5jb25uZWN0b3IudjEi7gMKDUNvbm5lY3RvckluZm8SOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSPAoJdHJhbnNwb3J0GAQgASgOMikua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvclRyYW5zcG9ydBIQCghlbmRwb2ludBgFIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAYgAygNEhgKEHN1cHBvcnRzX3BhaXJpbmcYByABKAgSHQoVc3VwcG9ydHNfcHJvdmlzaW9uaW5nGAggASgIEhUKDWJyb2tlcnNfbGlua3MYCSABKAgSMgoEa2luZBgKIAEoDjIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5Db25uZWN0b3JLaW5kEhMKC2Rlc2NyaXB0aW9uGAsgASgJEiUKHXN1cHBvcnRzX2JhY2tlbmRfcmVpbml0aWFsaXplGAwgASgIEkcKFGNvbnN1bWVzX2NyZWRlbnRpYWxzGA0gAygOMikua3VzaW50YS5pb3QuYWNjb3VudGxpbmsudjEuTGlua2VkU2VydmljZSKuAQoRQ3JlZGVudGlhbHNVcGRhdGUSFwoPYWNjb3VudF9saW5rX2lkGAEgASgJEjoKB3NlcnZpY2UYAiABKA4yKS5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5MaW5rZWRTZXJ2aWNlEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIuCgpleHBpcmVzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJRChNDcmVkZW50aWFsc1NuYXBzaG90EjoKBWxpbmtzGAEgAygLMisua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkNyZWRlbnRpYWxzVXBkYXRlIi0KEkNyZWRlbnRpYWxzUmV2b2tlZBIXCg9hY2NvdW50X2xpbmtfaWQYASABKAkirQMKEkNvbm5lY3RvckhhbmRzaGFrZRI1CgRpbmZvGAEgASgLMicua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkNvbm5lY3RvckluZm8SNAoNa25vd25fZGV2aWNlcxgCIAMoCzIdLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2USNAoLa25vd25fbGlua3MYAyADKAsyHy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmsSRQoOYmFja2VuZF9oZWFsdGgYBCABKAsyLS5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQmFja2VuZEhlYWx0aFJlcG9ydBJtChprbm93bl9kZXZpY2VfYWNjb3VudF9saW5rcxgFIAMoCzJJLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JIYW5kc2hha2UuS25vd25EZXZpY2VBY2NvdW50TGlua3NFbnRyeRo+ChxLbm93bkRldmljZUFjY291bnRMaW5rc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiWwoTQmFja2VuZEhlYWx0aFJlcG9ydBI0CgZoZWFsdGgYASABKAsyJC5rdXNpbnRhLmlvdC5jb21tb24udjEuQmFja2VuZEhlYWx0aBIOCgZkZXRhaWwYAiABKAkiKQoTUmVpbml0aWFsaXplQmFja2VuZBISCgpyZXF1ZXN0X2lkGAEgASgJIrwBChlSZWluaXRpYWxpemVCYWNrZW5kUmVzdWx0EhIKCnJlcXVlc3RfaWQYASABKAkSPgoHb3V0Y29tZRgCIAEoDjItLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5SZWluaXRpYWxpemVPdXRjb21lEjsKBnJlYXNvbhgDIAEoDjIrLmt1c2ludGEuaW90LmNvbW1vbi52MS5CYWNrZW5kRmFpbHVyZVJlYXNvbhIOCgZkZXRhaWwYBCABKAkiugEKCkNyZWF0ZUxpbmsSDwoHbGlua19pZBgBIAEoCRIxCgZzZW5kZXIYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAQgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24iugEKClJlbW92ZUxpbmsSDwoHbGlua19pZBgBIAEoCRIxCgZzZW5kZXIYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAQgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24iQQoJTGlzdExpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIm0KCkxpbmtSZXN1bHQSDwoHbGlua19pZBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIEi0KBXN0YXRlGAMgASgOMh4ua3VzaW50YS5pb3QubGluay52MS5MaW5rU3RhdGUSDgoGZGV0YWlsGAQgASgJIj8KDUxpbmtzUmVwb3J0ZWQSLgoFbGlua3MYASADKAsyHy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmsipAEKDEhhbmRzaGFrZUFjaxIQCghhY2NlcHRlZBgBIAEoCBIOCgZyZWFzb24YAiABKAkSNgoKZ2F0ZXdheV9pZBgDIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZBIfChdzdXBwb3J0c19iYWNrZW5kX2hlYWx0aBgEIAEoCBIZChFzZW5kc19jcmVkZW50aWFscxgFIAEoCCKKAQoSRGV2aWNlQW5ub3VuY2VtZW50Ei0KBmRldmljZRgCIAEoCzIdLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2USGgoScGFpcmluZ19yZXF1ZXN0X2lkGAMgASgJEhcKD2FjY291bnRfbGlua19pZBgEIAEoCUoECAEQAlIKZGVzY3JpcHRvciJVCg1EZXZpY2VSZW1vdmFsEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEg4KBnJlYXNvbhgCIAEoCSILCglIZWFydEJlYXQiRwoPU3Vic2NyaWJlRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIkkKEVVuc3Vic2NyaWJlRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIkEKDEdhdGV3YXlFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKcmVxdWVzdF9pZBgDIAEoCSLtAQoWQ29ubmVjdG9yQ29tbWFuZFJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMAoMY29tcGxldGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCgVlcnJvchgFIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db21tYW5kRXJyb3ISMwoKc2V0dGxlc19ieRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfc2V0dGxlc19ieUoECAMQBCJcChBFbnRlclBhaXJpbmdNb2RlEhIKCnJlcXVlc3RfaWQYASABKAkSNAoGd2luZG93GAIgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdXaW5kb3ciowEKEVBhaXJpbmdNb2RlUmVzdWx0EhIKCnJlcXVlc3RfaWQYASABKAkSEAoIYWNjZXB0ZWQYAiABKAgSOAoFZXJyb3IYAyABKAsyKS5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ0Vycm9yRGV0YWlsEi4KCmV4cGlyZXNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wInwKEFBhaXJpbmdNb2RlRW5kZWQSEgoKcmVxdWVzdF9pZBgBIAEoCRIaChJkZXZpY2VzX2F0dHJpYnV0ZWQYAiABKA0SOAoFZXJyb3IYAyABKAsyKS5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ0Vycm9yRGV0YWlsIvYHCg5TZXNzaW9uUmVxdWVzdBISCgptZXNzYWdlX2lkGAEgASgJEisKB3NlbnRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKCWhhbmRzaGFrZRgDIAEoCzIsLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5Db25uZWN0b3JIYW5kc2hha2VIABJFCg9wcm9wZXJ0eV91cGRhdGUYBCABKAsyKi5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUHJvcGVydHlVcGRhdGVCYXRjaEgAEkgKEGRldmljZV9hbm5vdW5jZWQYBSABKAsyLC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuRGV2aWNlQW5ub3VuY2VtZW50SAASQQoOZGV2aWNlX3JlbW92ZWQYBiABKAsyJy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuRGV2aWNlUmVtb3ZhbEgAEkoKDmNvbW1hbmRfcmVzdWx0GAcgASgLMjAua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkNvbm5lY3RvckNvbW1hbmRSZXN1bHRIABI4CgloZWFydGJlYXQYCCABKAsyIy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuSGVhcnRCZWF0SAASQAoNZGV2aWNlX2V2ZW50cxgJIAEoCzInLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2VFdmVudEJhdGNoSAASSgoTcGFpcmluZ19tb2RlX3Jlc3VsdBgKIAEoCzIrLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5QYWlyaW5nTW9kZVJlc3VsdEgAEkgKEnBhaXJpbmdfbW9kZV9lbmRlZBgLIAEoCzIqLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5QYWlyaW5nTW9kZUVuZGVkSAASOwoLbGlua19yZXN1bHQYDCABKAsyJC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuTGlua1Jlc3VsdEgAEkEKDmxpbmtzX3JlcG9ydGVkGA0gASgLMicua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkxpbmtzUmVwb3J0ZWRIABJHCg5iYWNrZW5kX2hlYWx0aBgOIAEoCzItLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5CYWNrZW5kSGVhbHRoUmVwb3J0SAASWgobcmVpbml0aWFsaXplX2JhY2tlbmRfcmVzdWx0GA8gASgLMjMua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLlJlaW5pdGlhbGl6ZUJhY2tlbmRSZXN1bHRIAEIJCgdwYXlsb2FkIqgICg9TZXNzaW9uUmVzcG9uc2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI/Cg1oYW5kc2hha2VfYWNrGAMgASgLMiYua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkhhbmRzaGFrZUFja0gAEj4KCXN1YnNjcmliZRgFIAEoCzIpLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5TdWJzY3JpYmVEZXZpY2VIABJCCgt1bnN1YnNjcmliZRgGIAEoCzIrLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5VbnN1YnNjcmliZURldmljZUgAEjcKBWVycm9yGAcgASgLMiYua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkdhdGV3YXlFcnJvckgAEj8KD2V4ZWN1dGVfY29tbWFuZBgIIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VDb21tYW5kSAASTwoXZXhlY3V0ZV9hdHRyaWJ1dGVfd3JpdGUYCSABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXR0cmlidXRlV3JpdGVSZXF1ZXN0SAASSAoSZW50ZXJfcGFpcmluZ19tb2RlGAogASgLMioua3VzaW50YS5pb3QuY29ubmVjdG9yLnYxLkVudGVyUGFpcmluZ01vZGVIABI7CgtjcmVhdGVfbGluaxgLIAEoCzIkLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5DcmVhdGVMaW5rSAASOwoLcmVtb3ZlX2xpbmsYDCABKAsyJC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuUmVtb3ZlTGlua0gAEjkKCmxpc3RfbGlua3MYDSABKAsyIy5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuTGlzdExpbmtzSAASTQoUcmVpbml0aWFsaXplX2JhY2tlbmQYDiABKAsyLS5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuUmVpbml0aWFsaXplQmFja2VuZEgAEkkKEmNyZWRlbnRpYWxzX3VwZGF0ZRgPIAEoCzIrLmt1c2ludGEuaW90LmNvbm5lY3Rvci52MS5DcmVkZW50aWFsc1VwZGF0ZUgAEksKE2NyZWRlbnRpYWxzX3Jldm9rZWQYECABKAsyLC5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ3JlZGVudGlhbHNSZXZva2VkSAASTQoUY3JlZGVudGlhbHNfc25hcHNob3QYESABKAsyLS5rdXNpbnRhLmlvdC5jb25uZWN0b3IudjEuQ3JlZGVudGlhbHNTbmFwc2hvdEgAQgkKB3BheWxvYWRKBAgEEAUqowEKE1JlaW5pdGlhbGl6ZU91dGNvbWUSJAogUkVJTklUSUFMSVpFX09VVENPTUVfVU5TUEVDSUZJRUQQABIdChlSRUlOSVRJQUxJWkVfT1VUQ09NRV9ET05FEAESHwobUkVJTklUSUFMSVpFX09VVENPTUVfRkFJTEVEEAISJgoiUkVJTklUSUFMSVpFX09VVENPTUVfTk9UX1NVUFBPUlRFRBADQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_device_v1_property_update, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_webrtc_v1_command]);
21
22
 
22
23
  /**
23
24
  * Describes the message kusinta.iot.connector.v1.ConnectorInfo.
@@ -26,159 +27,180 @@ export const file_kusinta_iot_connector_v1_connector = /*@__PURE__*/
26
27
  export const ConnectorInfoSchema = /*@__PURE__*/
27
28
  messageDesc(file_kusinta_iot_connector_v1_connector, 0);
28
29
 
30
+ /**
31
+ * Describes the message kusinta.iot.connector.v1.CredentialsUpdate.
32
+ * Use `create(CredentialsUpdateSchema)` to create a new message.
33
+ */
34
+ export const CredentialsUpdateSchema = /*@__PURE__*/
35
+ messageDesc(file_kusinta_iot_connector_v1_connector, 1);
36
+
37
+ /**
38
+ * Describes the message kusinta.iot.connector.v1.CredentialsSnapshot.
39
+ * Use `create(CredentialsSnapshotSchema)` to create a new message.
40
+ */
41
+ export const CredentialsSnapshotSchema = /*@__PURE__*/
42
+ messageDesc(file_kusinta_iot_connector_v1_connector, 2);
43
+
44
+ /**
45
+ * Describes the message kusinta.iot.connector.v1.CredentialsRevoked.
46
+ * Use `create(CredentialsRevokedSchema)` to create a new message.
47
+ */
48
+ export const CredentialsRevokedSchema = /*@__PURE__*/
49
+ messageDesc(file_kusinta_iot_connector_v1_connector, 3);
50
+
29
51
  /**
30
52
  * Describes the message kusinta.iot.connector.v1.ConnectorHandshake.
31
53
  * Use `create(ConnectorHandshakeSchema)` to create a new message.
32
54
  */
33
55
  export const ConnectorHandshakeSchema = /*@__PURE__*/
34
- messageDesc(file_kusinta_iot_connector_v1_connector, 1);
56
+ messageDesc(file_kusinta_iot_connector_v1_connector, 4);
35
57
 
36
58
  /**
37
59
  * Describes the message kusinta.iot.connector.v1.BackendHealthReport.
38
60
  * Use `create(BackendHealthReportSchema)` to create a new message.
39
61
  */
40
62
  export const BackendHealthReportSchema = /*@__PURE__*/
41
- messageDesc(file_kusinta_iot_connector_v1_connector, 2);
63
+ messageDesc(file_kusinta_iot_connector_v1_connector, 5);
42
64
 
43
65
  /**
44
66
  * Describes the message kusinta.iot.connector.v1.ReinitializeBackend.
45
67
  * Use `create(ReinitializeBackendSchema)` to create a new message.
46
68
  */
47
69
  export const ReinitializeBackendSchema = /*@__PURE__*/
48
- messageDesc(file_kusinta_iot_connector_v1_connector, 3);
70
+ messageDesc(file_kusinta_iot_connector_v1_connector, 6);
49
71
 
50
72
  /**
51
73
  * Describes the message kusinta.iot.connector.v1.ReinitializeBackendResult.
52
74
  * Use `create(ReinitializeBackendResultSchema)` to create a new message.
53
75
  */
54
76
  export const ReinitializeBackendResultSchema = /*@__PURE__*/
55
- messageDesc(file_kusinta_iot_connector_v1_connector, 4);
77
+ messageDesc(file_kusinta_iot_connector_v1_connector, 7);
56
78
 
57
79
  /**
58
80
  * Describes the message kusinta.iot.connector.v1.CreateLink.
59
81
  * Use `create(CreateLinkSchema)` to create a new message.
60
82
  */
61
83
  export const CreateLinkSchema = /*@__PURE__*/
62
- messageDesc(file_kusinta_iot_connector_v1_connector, 5);
84
+ messageDesc(file_kusinta_iot_connector_v1_connector, 8);
63
85
 
64
86
  /**
65
87
  * Describes the message kusinta.iot.connector.v1.RemoveLink.
66
88
  * Use `create(RemoveLinkSchema)` to create a new message.
67
89
  */
68
90
  export const RemoveLinkSchema = /*@__PURE__*/
69
- messageDesc(file_kusinta_iot_connector_v1_connector, 6);
91
+ messageDesc(file_kusinta_iot_connector_v1_connector, 9);
70
92
 
71
93
  /**
72
94
  * Describes the message kusinta.iot.connector.v1.ListLinks.
73
95
  * Use `create(ListLinksSchema)` to create a new message.
74
96
  */
75
97
  export const ListLinksSchema = /*@__PURE__*/
76
- messageDesc(file_kusinta_iot_connector_v1_connector, 7);
98
+ messageDesc(file_kusinta_iot_connector_v1_connector, 10);
77
99
 
78
100
  /**
79
101
  * Describes the message kusinta.iot.connector.v1.LinkResult.
80
102
  * Use `create(LinkResultSchema)` to create a new message.
81
103
  */
82
104
  export const LinkResultSchema = /*@__PURE__*/
83
- messageDesc(file_kusinta_iot_connector_v1_connector, 8);
105
+ messageDesc(file_kusinta_iot_connector_v1_connector, 11);
84
106
 
85
107
  /**
86
108
  * Describes the message kusinta.iot.connector.v1.LinksReported.
87
109
  * Use `create(LinksReportedSchema)` to create a new message.
88
110
  */
89
111
  export const LinksReportedSchema = /*@__PURE__*/
90
- messageDesc(file_kusinta_iot_connector_v1_connector, 9);
112
+ messageDesc(file_kusinta_iot_connector_v1_connector, 12);
91
113
 
92
114
  /**
93
115
  * Describes the message kusinta.iot.connector.v1.HandshakeAck.
94
116
  * Use `create(HandshakeAckSchema)` to create a new message.
95
117
  */
96
118
  export const HandshakeAckSchema = /*@__PURE__*/
97
- messageDesc(file_kusinta_iot_connector_v1_connector, 10);
119
+ messageDesc(file_kusinta_iot_connector_v1_connector, 13);
98
120
 
99
121
  /**
100
122
  * Describes the message kusinta.iot.connector.v1.DeviceAnnouncement.
101
123
  * Use `create(DeviceAnnouncementSchema)` to create a new message.
102
124
  */
103
125
  export const DeviceAnnouncementSchema = /*@__PURE__*/
104
- messageDesc(file_kusinta_iot_connector_v1_connector, 11);
126
+ messageDesc(file_kusinta_iot_connector_v1_connector, 14);
105
127
 
106
128
  /**
107
129
  * Describes the message kusinta.iot.connector.v1.DeviceRemoval.
108
130
  * Use `create(DeviceRemovalSchema)` to create a new message.
109
131
  */
110
132
  export const DeviceRemovalSchema = /*@__PURE__*/
111
- messageDesc(file_kusinta_iot_connector_v1_connector, 12);
133
+ messageDesc(file_kusinta_iot_connector_v1_connector, 15);
112
134
 
113
135
  /**
114
136
  * Describes the message kusinta.iot.connector.v1.HeartBeat.
115
137
  * Use `create(HeartBeatSchema)` to create a new message.
116
138
  */
117
139
  export const HeartBeatSchema = /*@__PURE__*/
118
- messageDesc(file_kusinta_iot_connector_v1_connector, 13);
140
+ messageDesc(file_kusinta_iot_connector_v1_connector, 16);
119
141
 
120
142
  /**
121
143
  * Describes the message kusinta.iot.connector.v1.SubscribeDevice.
122
144
  * Use `create(SubscribeDeviceSchema)` to create a new message.
123
145
  */
124
146
  export const SubscribeDeviceSchema = /*@__PURE__*/
125
- messageDesc(file_kusinta_iot_connector_v1_connector, 14);
147
+ messageDesc(file_kusinta_iot_connector_v1_connector, 17);
126
148
 
127
149
  /**
128
150
  * Describes the message kusinta.iot.connector.v1.UnsubscribeDevice.
129
151
  * Use `create(UnsubscribeDeviceSchema)` to create a new message.
130
152
  */
131
153
  export const UnsubscribeDeviceSchema = /*@__PURE__*/
132
- messageDesc(file_kusinta_iot_connector_v1_connector, 15);
154
+ messageDesc(file_kusinta_iot_connector_v1_connector, 18);
133
155
 
134
156
  /**
135
157
  * Describes the message kusinta.iot.connector.v1.GatewayError.
136
158
  * Use `create(GatewayErrorSchema)` to create a new message.
137
159
  */
138
160
  export const GatewayErrorSchema = /*@__PURE__*/
139
- messageDesc(file_kusinta_iot_connector_v1_connector, 16);
161
+ messageDesc(file_kusinta_iot_connector_v1_connector, 19);
140
162
 
141
163
  /**
142
164
  * Describes the message kusinta.iot.connector.v1.ConnectorCommandResult.
143
165
  * Use `create(ConnectorCommandResultSchema)` to create a new message.
144
166
  */
145
167
  export const ConnectorCommandResultSchema = /*@__PURE__*/
146
- messageDesc(file_kusinta_iot_connector_v1_connector, 17);
168
+ messageDesc(file_kusinta_iot_connector_v1_connector, 20);
147
169
 
148
170
  /**
149
171
  * Describes the message kusinta.iot.connector.v1.EnterPairingMode.
150
172
  * Use `create(EnterPairingModeSchema)` to create a new message.
151
173
  */
152
174
  export const EnterPairingModeSchema = /*@__PURE__*/
153
- messageDesc(file_kusinta_iot_connector_v1_connector, 18);
175
+ messageDesc(file_kusinta_iot_connector_v1_connector, 21);
154
176
 
155
177
  /**
156
178
  * Describes the message kusinta.iot.connector.v1.PairingModeResult.
157
179
  * Use `create(PairingModeResultSchema)` to create a new message.
158
180
  */
159
181
  export const PairingModeResultSchema = /*@__PURE__*/
160
- messageDesc(file_kusinta_iot_connector_v1_connector, 19);
182
+ messageDesc(file_kusinta_iot_connector_v1_connector, 22);
161
183
 
162
184
  /**
163
185
  * Describes the message kusinta.iot.connector.v1.PairingModeEnded.
164
186
  * Use `create(PairingModeEndedSchema)` to create a new message.
165
187
  */
166
188
  export const PairingModeEndedSchema = /*@__PURE__*/
167
- messageDesc(file_kusinta_iot_connector_v1_connector, 20);
189
+ messageDesc(file_kusinta_iot_connector_v1_connector, 23);
168
190
 
169
191
  /**
170
192
  * Describes the message kusinta.iot.connector.v1.SessionRequest.
171
193
  * Use `create(SessionRequestSchema)` to create a new message.
172
194
  */
173
195
  export const SessionRequestSchema = /*@__PURE__*/
174
- messageDesc(file_kusinta_iot_connector_v1_connector, 21);
196
+ messageDesc(file_kusinta_iot_connector_v1_connector, 24);
175
197
 
176
198
  /**
177
199
  * Describes the message kusinta.iot.connector.v1.SessionResponse.
178
200
  * Use `create(SessionResponseSchema)` to create a new message.
179
201
  */
180
202
  export const SessionResponseSchema = /*@__PURE__*/
181
- messageDesc(file_kusinta_iot_connector_v1_connector, 22);
203
+ messageDesc(file_kusinta_iot_connector_v1_connector, 25);
182
204
 
183
205
  /**
184
206
  * Describes the enum kusinta.iot.connector.v1.ReinitializeOutcome.