@kusinta/iot-schema 0.2.0-beta.5 → 0.2.0-beta.51

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.
Files changed (69) hide show
  1. package/package.json +42 -28
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +138 -2
  3. package/src/kusinta/iot/access/v1/acl_pb.js +19 -2
  4. package/src/kusinta/iot/access/v1/roles_pb.d.ts +160 -4
  5. package/src/kusinta/iot/access/v1/roles_pb.js +128 -5
  6. package/src/kusinta/iot/accountlink/v1/account_link_pb.d.ts +591 -0
  7. package/src/kusinta/iot/accountlink/v1/account_link_pb.js +160 -0
  8. package/src/kusinta/iot/climate/v1/climate_pb.d.ts +1495 -0
  9. package/src/kusinta/iot/climate/v1/climate_pb.js +278 -0
  10. package/src/kusinta/iot/commissioning/v1/commissioning_pb.d.ts +1359 -0
  11. package/src/kusinta/iot/commissioning/v1/commissioning_pb.js +282 -0
  12. package/src/kusinta/iot/common/v1/pairing_pb.d.ts +219 -0
  13. package/src/kusinta/iot/common/v1/pairing_pb.js +50 -0
  14. package/src/kusinta/iot/common/v1/types_pb.d.ts +235 -0
  15. package/src/kusinta/iot/common/v1/types_pb.js +84 -2
  16. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +874 -3
  17. package/src/kusinta/iot/connector/v1/connector_pb.js +126 -13
  18. package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +213 -1
  19. package/src/kusinta/iot/device/v1/cluster_state_pb.js +37 -2
  20. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +32 -4
  21. package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
  22. package/src/kusinta/iot/device/v1/device_event_pb.d.ts +89 -5
  23. package/src/kusinta/iot/device/v1/device_event_pb.js +1 -1
  24. package/src/kusinta/iot/device/v1/device_pb.d.ts +426 -11
  25. package/src/kusinta/iot/device/v1/device_pb.js +74 -2
  26. package/src/kusinta/iot/device/v1/properties_pb.d.ts +26 -5
  27. package/src/kusinta/iot/device/v1/properties_pb.js +1 -1
  28. package/src/kusinta/iot/device/v1/property_update_pb.d.ts +42 -2
  29. package/src/kusinta/iot/device/v1/property_update_pb.js +2 -1
  30. package/src/kusinta/iot/heating/v1/heating_pb.d.ts +656 -0
  31. package/src/kusinta/iot/heating/v1/heating_pb.js +119 -0
  32. package/src/kusinta/iot/link/v1/link_pb.d.ts +438 -0
  33. package/src/kusinta/iot/link/v1/link_pb.js +121 -0
  34. package/src/kusinta/iot/registration/v1/registration_pb.d.ts +18 -0
  35. package/src/kusinta/iot/registration/v1/registration_pb.js +1 -1
  36. package/src/kusinta/iot/reporting/v1/reporting_pb.d.ts +1251 -0
  37. package/src/kusinta/iot/reporting/v1/reporting_pb.js +238 -0
  38. package/src/kusinta/iot/reporting/v1/reporting_service_pb.d.ts +63 -0
  39. package/src/kusinta/iot/reporting/v1/reporting_service_pb.js +24 -0
  40. package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +939 -7
  41. package/src/kusinta/iot/signaling/v1/signaling_pb.js +163 -4
  42. package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +24 -1
  43. package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +1 -1
  44. package/src/kusinta/iot/space/v1/space_pb.d.ts +146 -2
  45. package/src/kusinta/iot/space/v1/space_pb.js +10 -1
  46. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +15 -0
  47. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +1 -1
  48. package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.d.ts +69 -0
  49. package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.js +19 -0
  50. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +5 -4
  51. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +5 -4
  52. package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +48 -5
  53. package/src/kusinta/iot/webrtc/v1/app_token_pb.js +1 -1
  54. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +56 -0
  55. package/src/kusinta/iot/webrtc/v1/command_pb.js +1 -1
  56. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +179 -5
  57. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +34 -5
  58. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +732 -3
  59. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +84 -4
  60. package/src/kusinta/iot/webrtc/v1/household_pb.d.ts +612 -0
  61. package/src/kusinta/iot/webrtc/v1/household_pb.js +134 -0
  62. package/src/kusinta/iot/webrtc/v1/invite_pb.d.ts +502 -0
  63. package/src/kusinta/iot/webrtc/v1/invite_pb.js +108 -0
  64. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +2183 -76
  65. package/src/kusinta/iot/webrtc/v1/management_pb.js +311 -5
  66. package/src/kusinta/iot/webrtc/v1/members_pb.d.ts +582 -0
  67. package/src/kusinta/iot/webrtc/v1/members_pb.js +113 -0
  68. package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +66 -4
  69. package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +9 -1
@@ -2,13 +2,16 @@
2
2
  // @generated from file kusinta/iot/connector/v1/connector.proto (package kusinta.iot.connector.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
- import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
5
+ 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
- import type { ConnectorTransport } from "../../common/v1/types_pb.js";
9
- import type { Device } from "../../device/v1/device_pb.js";
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
10
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
11
+ import type { Device } from "../../device/v1/device_pb.js";
12
+ import type { DeviceLink, LinkFunction, LinkState } from "../../link/v1/link_pb.js";
11
13
  import type { AttributeWriteRequest, CommandError, DeviceCommand } from "../../webrtc/v1/command_pb.js";
14
+ import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
12
15
  import type { PropertyUpdateBatch } from "../../device/v1/property_update_pb.js";
13
16
  import type { DeviceEventBatch } from "../../device/v1/device_event_pb.js";
14
17
 
@@ -27,6 +30,10 @@ export declare type ConnectorInfo = Message<"kusinta.iot.connector.v1.ConnectorI
27
30
  connectorId?: ConnectorId | undefined;
28
31
 
29
32
  /**
33
+ * User-facing and free-form — "HomeMatic hub", "LoRaWAN". An interface may show
34
+ * it; nothing ever matches on it. connector_id is the routing key; this is only
35
+ * a label for a person.
36
+ *
30
37
  * @generated from field: string display_name = 2;
31
38
  */
32
39
  displayName: string;
@@ -52,6 +59,82 @@ export declare type ConnectorInfo = Message<"kusinta.iot.connector.v1.ConnectorI
52
59
  * @generated from field: repeated uint32 supported_device_type_ids = 6;
53
60
  */
54
61
  supportedDeviceTypeIds: number[];
62
+
63
+ /**
64
+ * The connector opens a radio window on request: the app may offer the pairing
65
+ * flow and target webrtc.v1.StartPairing.connector_id at it. A connector whose
66
+ * devices are registered rather than paired (see supports_provisioning) sets this
67
+ * false.
68
+ *
69
+ * @generated from field: bool supports_pairing = 7;
70
+ */
71
+ supportsPairing: boolean;
72
+
73
+ /**
74
+ * The connector registers a device from credentials it is handed, rather than
75
+ * adopting one that joins during a window — the webrtc.v1.ProvisionDevice path.
76
+ * This is how the app knows to show a credential-entry flow instead of pairing,
77
+ * and ProvisionDevice.connector_id is targeted at a connector that declares it.
78
+ *
79
+ * @generated from field: bool supports_provisioning = 8;
80
+ */
81
+ supportsProvisioning: boolean;
82
+
83
+ /**
84
+ * The connector brokers device-to-device (hard) links: the link picker may offer
85
+ * them and can name the hub behind an otherwise-hidden candidate. Declared here
86
+ * rather than inferred from both devices reporting LINK_MODE_HARD, so it is a
87
+ * statement the connector makes rather than a guess the app assembles.
88
+ *
89
+ * @generated from field: bool brokers_links = 9;
90
+ */
91
+ brokersLinks: boolean;
92
+
93
+ /**
94
+ * Presentation only — an icon or a phrase; see common.v1.ConnectorKind for why it
95
+ * never gates behaviour. Unset is CONNECTOR_KIND_UNSPECIFIED, a generic hub.
96
+ *
97
+ * @generated from field: kusinta.iot.common.v1.ConnectorKind kind = 10;
98
+ */
99
+ kind: ConnectorKind;
100
+
101
+ /**
102
+ * Installer or operator detail — where the hub is, which building leg it serves.
103
+ * Kept off connector_id, whose identity contract routing depends on, and off
104
+ * display_name, which is the short label. Free-form, for a person; never matched
105
+ * on.
106
+ *
107
+ * @generated from field: string description = 11;
108
+ */
109
+ description: string;
110
+
111
+ /**
112
+ * The connector answers ReinitializeBackend: it can drop and re-establish its connection
113
+ * to its backend on request. The gateway sends ReinitializeBackend only to a connector
114
+ * that declares this, and refuses a reconnect for any other without asking it — a
115
+ * connector whose schema predates the message would ignore it, and the gateway would wait
116
+ * out its deadline for nothing.
117
+ *
118
+ * @generated from field: bool supports_backend_reinitialize = 12;
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[];
55
138
  };
56
139
 
57
140
  /**
@@ -60,6 +143,116 @@ export declare type ConnectorInfo = Message<"kusinta.iot.connector.v1.ConnectorI
60
143
  */
61
144
  export declare const ConnectorInfoSchema: GenMessage<ConnectorInfo>;
62
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
+
63
256
  /**
64
257
  * @generated from message kusinta.iot.connector.v1.ConnectorHandshake
65
258
  */
@@ -73,6 +266,62 @@ export declare type ConnectorHandshake = Message<"kusinta.iot.connector.v1.Conne
73
266
  * @generated from field: repeated kusinta.iot.device.v1.Device known_devices = 2;
74
267
  */
75
268
  knownDevices: Device[];
269
+
270
+ /**
271
+ * Every link the hub currently holds, reported the way known_devices is.
272
+ *
273
+ * Links are hub state, not gateway state: they outlive a connector restart and
274
+ * can be changed by anyone with access to the hub. The gateway's records are a
275
+ * statement of intent that can drift, so the handshake is the moment to
276
+ * reconcile them against what is really there. A link in the gateway's records
277
+ * and not here has gone; one here and not in the records was made elsewhere.
278
+ *
279
+ * Empty means "states nothing" — a connector that does not model linking is not
280
+ * asserting that no links exist.
281
+ *
282
+ * @generated from field: repeated kusinta.iot.link.v1.DeviceLink known_links = 3;
283
+ */
284
+ knownLinks: DeviceLink[];
285
+
286
+ /**
287
+ * The backend's health as the connector handshakes, so the gateway starts every session
288
+ * from the current state rather than from whatever it held before the stream dropped.
289
+ * From then on, changes arrive as BackendHealthReport on the session.
290
+ *
291
+ * Unset states nothing, and the gateway reads it as OK: a connector that predates backend
292
+ * health never sends it, and is never taken to be failing. A connector whose backend has
293
+ * not answered a call since it connected to the gateway — its backend is still in
294
+ * doubt — leaves it unset, or states FAILING only where BackendHealthReport's rules for
295
+ * FAILING already hold; never OK.
296
+ *
297
+ * After connecting to a gateway that sets HandshakeAck.supports_backend_health, a
298
+ * connector that reports backend health follows the rules on BackendHealthReport: its
299
+ * backend is in doubt from connecting to the gateway until it first answers, so the
300
+ * connector states OK (once it has answered) or FAILING within 60 seconds, here or in a
301
+ * BackendHealthReport, reports none of its devices as unreachable while its backend is in
302
+ * doubt, and re-reports them once it is not, as BackendHealthReport says. Toward a gateway
303
+ * that does not set it, none of those rules applies: the connector reports its devices as
304
+ * it did before backend health existed.
305
+ *
306
+ * Safe to set whatever the gateway: the handshake goes before the connector knows which
307
+ * gateway it reached, and a gateway that predates backend health skips the field as
308
+ * unknown. Everything after the handshake waits for HandshakeAck.supports_backend_health.
309
+ *
310
+ * @generated from field: kusinta.iot.connector.v1.BackendHealthReport backend_health = 4;
311
+ */
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 };
76
325
  };
77
326
 
78
327
  /**
@@ -81,6 +330,319 @@ export declare type ConnectorHandshake = Message<"kusinta.iot.connector.v1.Conne
81
330
  */
82
331
  export declare const ConnectorHandshakeSchema: GenMessage<ConnectorHandshake>;
83
332
 
333
+ /**
334
+ * The health of the backend the connector drives, connector to gateway: whether the radio
335
+ * central or network server behind it is working. See common.v1.BackendHealth.
336
+ *
337
+ * Sent on the session only to a gateway that sets HandshakeAck.supports_backend_health; the
338
+ * handshake's ConnectorHandshake.backend_health is set whatever the gateway, since the ack is
339
+ * not yet known. To a gateway that does not set it — one that predates backend health — the
340
+ * connector sends neither this on the session nor
341
+ * ReinitializeBackendResult, and keeps working as it did before: its backend failing is
342
+ * then only in its own logs.
343
+ *
344
+ * Sent in the handshake (ConnectorHandshake.backend_health), then whenever state or reason
345
+ * changes, and once after every requested re-initialisation (ReinitializeBackend) it
346
+ * attempts, changed or not, before the
347
+ * result that answers it. Not sent for a change of detail alone. Each report replaces the
348
+ * last.
349
+ *
350
+ * The connector's backend is in doubt from when the connector connects to the gateway (each
351
+ * session, whether or not the backend kept answering meanwhile), from any failed call
352
+ * to the backend, and from a re-initialisation the connector attempts, until the backend
353
+ * answers a call again; OK
354
+ * is stated only once it has. While it is in doubt the
355
+ * connector reports none of its devices as unreachable, by whatever its technology uses to
356
+ * say so: a device it cannot reach then may be the backend's fault. The gateway applies no
357
+ * debounce of its own, so the connector never reports FAILING for a single failed call: it
358
+ * reports FAILING once its backend has been in doubt for 60 seconds in all within the last
359
+ * 120 — so a backend that hangs, or answers only now and then, reaches it, and brief failures
360
+ * between answers do not — or sooner when its own
361
+ * retries are used up, with the reason of its latest failed call, or UNREACHABLE when none
362
+ * has failed yet. After a ReinitializeBackend it reports the attempt's true outcome at once,
363
+ * FAILING included, or OK, before the result: the request is the retry a person asked for.
364
+ * A backend outage the connector rides out within 60 seconds opens no problem, and what the
365
+ * backend then says of its devices is reported as it is.
366
+ *
367
+ * When its backend stops being in doubt, whatever started it, the connector reports, within
368
+ * 30 seconds, the current reachability of every device it knows, reachable ones included. If
369
+ * doubt comes back before it is done, it still reports the devices it knows to be reachable,
370
+ * and the rest once the doubt ends. The gateway closes
371
+ * a device's offline problem as recovered only on a report that the device is reachable —
372
+ * this one or any later one — never on silence; it closes for other reasons as reporting.v1
373
+ * says.
374
+ *
375
+ * The gateway raises reporting.v1.PROBLEM_KIND_CONNECTOR_ERROR for this connector while its
376
+ * stream is up and the latest report is FAILING, and clears it when one is anything else; a
377
+ * stream that drops closes it too, and the next handshake decides afresh (see reporting.v1).
378
+ * A connector that never sends one is OK throughout. CONNECTOR_OFFLINE is the other problem
379
+ * and is not this one: that is the stream to the gateway down, this is the stream up and
380
+ * the backend failing.
381
+ *
382
+ * @generated from message kusinta.iot.connector.v1.BackendHealthReport
383
+ */
384
+ export declare type BackendHealthReport = Message<"kusinta.iot.connector.v1.BackendHealthReport"> & {
385
+ /**
386
+ * @generated from field: kusinta.iot.common.v1.BackendHealth health = 1;
387
+ */
388
+ health?: BackendHealth | undefined;
389
+
390
+ /**
391
+ * What went wrong, in the connector's words — an error message, the host it could not
392
+ * reach. For the gateway's logs only. The gateway never forwards it: not to the app, not
393
+ * to the cloud, not into a problem report. Empty when there is nothing to add.
394
+ *
395
+ * @generated from field: string detail = 2;
396
+ */
397
+ detail: string;
398
+ };
399
+
400
+ /**
401
+ * Describes the message kusinta.iot.connector.v1.BackendHealthReport.
402
+ * Use `create(BackendHealthReportSchema)` to create a new message.
403
+ */
404
+ export declare const BackendHealthReportSchema: GenMessage<BackendHealthReport>;
405
+
406
+ /**
407
+ * Asks the connector to re-initialise its backend connection, gateway to connector: drop
408
+ * the connection to its radio central or network server and establish it again, as it would
409
+ * at startup. Sent only to a connector that declares
410
+ * ConnectorInfo.supports_backend_reinitialize.
411
+ *
412
+ * Idempotent. Re-initialising a healthy backend is harmless, and asking twice is the same as
413
+ * asking once: a ReinitializeBackend that arrives while one is running starts nothing new,
414
+ * and is answered with the running one's outcome when it finishes. The gateway sends at most
415
+ * one at a time per connector and refuses a second request from above while one is
416
+ * outstanding; the connector's coalescing covers the case where the gateway gave up waiting
417
+ * and asked again.
418
+ *
419
+ * Sent only by a gateway that sets HandshakeAck.supports_backend_health, so a connector
420
+ * that receives it may answer. Answered once, by ReinitializeBackendResult with the same
421
+ * request_id. The connector bounds its attempt so that it answers within 30 seconds of
422
+ * receiving this; the gateway waits at least 45 and at most 60 seconds before it treats the
423
+ * request as timed out. A result arriving after the gateway has given up is ignored, but the
424
+ * health report sent before it still applies.
425
+ *
426
+ * @generated from message kusinta.iot.connector.v1.ReinitializeBackend
427
+ */
428
+ export declare type ReinitializeBackend = Message<"kusinta.iot.connector.v1.ReinitializeBackend"> & {
429
+ /**
430
+ * minted by the gateway, echoed in the result
431
+ *
432
+ * @generated from field: string request_id = 1;
433
+ */
434
+ requestId: string;
435
+ };
436
+
437
+ /**
438
+ * Describes the message kusinta.iot.connector.v1.ReinitializeBackend.
439
+ * Use `create(ReinitializeBackendSchema)` to create a new message.
440
+ */
441
+ export declare const ReinitializeBackendSchema: GenMessage<ReinitializeBackend>;
442
+
443
+ /**
444
+ * What became of a ReinitializeBackend, connector to gateway.
445
+ *
446
+ * DONE means the attempt was made and has finished — not that it succeeded. Whether the
447
+ * backend works now is stated by the BackendHealthReport the connector sends after every
448
+ * attempt, before this result, so a gateway reading DONE already holds the outcome. Keeping
449
+ * the two apart means there is one place that says whether a backend is healthy, and a
450
+ * result cannot contradict it.
451
+ *
452
+ * @generated from message kusinta.iot.connector.v1.ReinitializeBackendResult
453
+ */
454
+ export declare type ReinitializeBackendResult = Message<"kusinta.iot.connector.v1.ReinitializeBackendResult"> & {
455
+ /**
456
+ * @generated from field: string request_id = 1;
457
+ */
458
+ requestId: string;
459
+
460
+ /**
461
+ * @generated from field: kusinta.iot.connector.v1.ReinitializeOutcome outcome = 2;
462
+ */
463
+ outcome: ReinitializeOutcome;
464
+
465
+ /**
466
+ * Why it could not be attempted, when outcome is FAILED: MISCONFIGURED or INTERNAL.
467
+ * UNSPECIFIED otherwise. Never a failure found by attempting — rejected credentials, a
468
+ * backend that does not answer: the attempt was made, so the outcome is DONE and the
469
+ * health report before it says FAILING with AUTH_FAILED, UNREACHABLE or the like.
470
+ *
471
+ * @generated from field: kusinta.iot.common.v1.BackendFailureReason reason = 3;
472
+ */
473
+ reason: BackendFailureReason;
474
+
475
+ /**
476
+ * For the gateway's logs only, as BackendHealthReport.detail; never forwarded.
477
+ *
478
+ * @generated from field: string detail = 4;
479
+ */
480
+ detail: string;
481
+ };
482
+
483
+ /**
484
+ * Describes the message kusinta.iot.connector.v1.ReinitializeBackendResult.
485
+ * Use `create(ReinitializeBackendResultSchema)` to create a new message.
486
+ */
487
+ export declare const ReinitializeBackendResultSchema: GenMessage<ReinitializeBackendResult>;
488
+
489
+ /**
490
+ * Asks the connector to make a link, gateway to connector.
491
+ *
492
+ * Names two devices and a function; resolving that into whatever set of
493
+ * underlying connections the hub needs is the connector's work. It is expected to
494
+ * build the set atomically and roll back a partial one, because a half-built set
495
+ * is a link that lists as healthy and carries nothing.
496
+ *
497
+ * The connector is also expected to repair whatever the operation disturbs. On at
498
+ * least one vendor, both making and removing a link leaves the receiving device
499
+ * in a state it was not in before, with settings that must be captured
500
+ * beforehand and put back after.
501
+ *
502
+ * @generated from message kusinta.iot.connector.v1.CreateLink
503
+ */
504
+ export declare type CreateLink = Message<"kusinta.iot.connector.v1.CreateLink"> & {
505
+ /**
506
+ * assigned by the gateway, echoed in the result
507
+ *
508
+ * @generated from field: string link_id = 1;
509
+ */
510
+ linkId: string;
511
+
512
+ /**
513
+ * @generated from field: kusinta.iot.identity.v1.DeviceId sender = 2;
514
+ */
515
+ sender?: DeviceId | undefined;
516
+
517
+ /**
518
+ * @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 3;
519
+ */
520
+ receiver?: DeviceId | undefined;
521
+
522
+ /**
523
+ * @generated from field: kusinta.iot.link.v1.LinkFunction function = 4;
524
+ */
525
+ function: LinkFunction;
526
+ };
527
+
528
+ /**
529
+ * Describes the message kusinta.iot.connector.v1.CreateLink.
530
+ * Use `create(CreateLinkSchema)` to create a new message.
531
+ */
532
+ export declare const CreateLinkSchema: GenMessage<CreateLink>;
533
+
534
+ /**
535
+ * Asks the connector to remove a link it previously made.
536
+ *
537
+ * @generated from message kusinta.iot.connector.v1.RemoveLink
538
+ */
539
+ export declare type RemoveLink = Message<"kusinta.iot.connector.v1.RemoveLink"> & {
540
+ /**
541
+ * @generated from field: string link_id = 1;
542
+ */
543
+ linkId: string;
544
+
545
+ /**
546
+ * @generated from field: kusinta.iot.identity.v1.DeviceId sender = 2;
547
+ */
548
+ sender?: DeviceId | undefined;
549
+
550
+ /**
551
+ * @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 3;
552
+ */
553
+ receiver?: DeviceId | undefined;
554
+
555
+ /**
556
+ * @generated from field: kusinta.iot.link.v1.LinkFunction function = 4;
557
+ */
558
+ function: LinkFunction;
559
+ };
560
+
561
+ /**
562
+ * Describes the message kusinta.iot.connector.v1.RemoveLink.
563
+ * Use `create(RemoveLinkSchema)` to create a new message.
564
+ */
565
+ export declare const RemoveLinkSchema: GenMessage<RemoveLink>;
566
+
567
+ /**
568
+ * Asks the connector what links the hub holds, for reconciliation outside a
569
+ * handshake.
570
+ *
571
+ * @generated from message kusinta.iot.connector.v1.ListLinks
572
+ */
573
+ export declare type ListLinks = Message<"kusinta.iot.connector.v1.ListLinks"> & {
574
+ /**
575
+ * Unset asks for every link the hub holds.
576
+ *
577
+ * @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
578
+ */
579
+ deviceId?: DeviceId | undefined;
580
+ };
581
+
582
+ /**
583
+ * Describes the message kusinta.iot.connector.v1.ListLinks.
584
+ * Use `create(ListLinksSchema)` to create a new message.
585
+ */
586
+ export declare const ListLinksSchema: GenMessage<ListLinks>;
587
+
588
+ /**
589
+ * What became of a CreateLink or RemoveLink, connector to gateway.
590
+ *
591
+ * Reports the link's observed state rather than merely whether the call was
592
+ * accepted. A hub will report a link as present and healthy while the devices
593
+ * ignore it, so "the request did not fail" is not the same claim as "the link is
594
+ * carrying" and must not be encoded as though it were.
595
+ *
596
+ * @generated from message kusinta.iot.connector.v1.LinkResult
597
+ */
598
+ export declare type LinkResult = Message<"kusinta.iot.connector.v1.LinkResult"> & {
599
+ /**
600
+ * @generated from field: string link_id = 1;
601
+ */
602
+ linkId: string;
603
+
604
+ /**
605
+ * @generated from field: bool success = 2;
606
+ */
607
+ success: boolean;
608
+
609
+ /**
610
+ * @generated from field: kusinta.iot.link.v1.LinkState state = 3;
611
+ */
612
+ state: LinkState;
613
+
614
+ /**
615
+ * Why not, when success is false. For a person; never parsed.
616
+ *
617
+ * @generated from field: string detail = 4;
618
+ */
619
+ detail: string;
620
+ };
621
+
622
+ /**
623
+ * Describes the message kusinta.iot.connector.v1.LinkResult.
624
+ * Use `create(LinkResultSchema)` to create a new message.
625
+ */
626
+ export declare const LinkResultSchema: GenMessage<LinkResult>;
627
+
628
+ /**
629
+ * Every link the hub holds, connector to gateway, in reply to ListLinks.
630
+ *
631
+ * @generated from message kusinta.iot.connector.v1.LinksReported
632
+ */
633
+ export declare type LinksReported = Message<"kusinta.iot.connector.v1.LinksReported"> & {
634
+ /**
635
+ * @generated from field: repeated kusinta.iot.link.v1.DeviceLink links = 1;
636
+ */
637
+ links: DeviceLink[];
638
+ };
639
+
640
+ /**
641
+ * Describes the message kusinta.iot.connector.v1.LinksReported.
642
+ * Use `create(LinksReportedSchema)` to create a new message.
643
+ */
644
+ export declare const LinksReportedSchema: GenMessage<LinksReported>;
645
+
84
646
  /**
85
647
  * @generated from message kusinta.iot.connector.v1.HandshakeAck
86
648
  */
@@ -99,6 +661,25 @@ export declare type HandshakeAck = Message<"kusinta.iot.connector.v1.HandshakeAc
99
661
  * @generated from field: kusinta.iot.identity.v1.GatewayId gateway_id = 3;
100
662
  */
101
663
  gatewayId?: GatewayId | undefined;
664
+
665
+ /**
666
+ * The gateway understands BackendHealthReport and ReinitializeBackendResult. A connector
667
+ * sends either on the session only when this is set. Unset — a gateway that predates
668
+ * backend health — the connector sends neither and works as before; such a gateway never
669
+ * sends ReinitializeBackend.
670
+ *
671
+ * @generated from field: bool supports_backend_health = 4;
672
+ */
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;
102
683
  };
103
684
 
104
685
  /**
@@ -122,6 +703,38 @@ export declare type DeviceAnnouncement = Message<"kusinta.iot.connector.v1.Devic
122
703
  * @generated from field: kusinta.iot.device.v1.Device device = 2;
123
704
  */
124
705
  device?: Device | undefined;
706
+
707
+ /**
708
+ * The pairing request this device arrived for, empty for a device that arrived on its own.
709
+ *
710
+ * This field is the whole attribution mechanism. A connector is the only party that knows
711
+ * when its own hub was accepting devices, so it decides whether an arrival belongs to a
712
+ * request and says so here.
713
+ *
714
+ * Set it only when the arrival was actually checked. An arrival that fails the check is
715
+ * still announced — the device exists and has joined — but with this empty, which files it
716
+ * as belonging to nobody rather than to the wrong person.
717
+ *
718
+ * This is EnterPairingMode.request_id, minted per connector, and NOT an app message id:
719
+ * whoever forwards the outcome to the app has to map it back. The name avoids `in_reply_to`
720
+ * for that reason, which everywhere else in this schema means the app's own message id.
721
+ *
722
+ * @generated from field: string pairing_request_id = 3;
723
+ */
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;
125
738
  };
126
739
 
127
740
  /**
@@ -309,6 +922,127 @@ export declare type ConnectorCommandResult = Message<"kusinta.iot.connector.v1.C
309
922
  */
310
923
  export declare const ConnectorCommandResultSchema: GenMessage<ConnectorCommandResult>;
311
924
 
925
+ /**
926
+ * Tells a connector to accept new devices for a while, gateway → connector.
927
+ *
928
+ * Named for what the connector does rather than for what the app asked. The two legs are
929
+ * named differently on purpose: the app starts one pairing, and the gateway may put several
930
+ * connectors into pairing mode to serve it.
931
+ *
932
+ * @generated from message kusinta.iot.connector.v1.EnterPairingMode
933
+ */
934
+ export declare type EnterPairingMode = Message<"kusinta.iot.connector.v1.EnterPairingMode"> & {
935
+ /**
936
+ * echoed on PairingModeResult, PairingModeEnded and the announcement
937
+ *
938
+ * @generated from field: string request_id = 1;
939
+ */
940
+ requestId: string;
941
+
942
+ /**
943
+ * How long, which device, how many. See PairingWindow — and clamp the duration again here.
944
+ * A connector is the last thing standing between a number on the wire and a radio that
945
+ * accepts anything nearby for that long.
946
+ *
947
+ * @generated from field: kusinta.iot.common.v1.PairingWindow window = 2;
948
+ */
949
+ window?: PairingWindow | undefined;
950
+ };
951
+
952
+ /**
953
+ * Describes the message kusinta.iot.connector.v1.EnterPairingMode.
954
+ * Use `create(EnterPairingModeSchema)` to create a new message.
955
+ */
956
+ export declare const EnterPairingModeSchema: GenMessage<EnterPairingMode>;
957
+
958
+ /**
959
+ * A connector's answer to EnterPairingMode: whether the window opened, and nothing more.
960
+ *
961
+ * The same accept-now-report-later split as ConnectorCommandResult, for the same reason — a
962
+ * connector that waited for a device to wake before answering would blow every deadline
963
+ * above it. What the window produced arrives later, as PairingModeEnded.
964
+ *
965
+ * @generated from message kusinta.iot.connector.v1.PairingModeResult
966
+ */
967
+ export declare type PairingModeResult = Message<"kusinta.iot.connector.v1.PairingModeResult"> & {
968
+ /**
969
+ * @generated from field: string request_id = 1;
970
+ */
971
+ requestId: string;
972
+
973
+ /**
974
+ * @generated from field: bool accepted = 2;
975
+ */
976
+ accepted: boolean;
977
+
978
+ /**
979
+ * Why the window did not open. Only what a connector can observe at this point:
980
+ * CONNECTOR_UNAVAILABLE, INTERNAL. NOT_ENTITLED and ALREADY_IN_PROGRESS are the gateway's,
981
+ * decided before this message is sent, and a connector must not claim them.
982
+ *
983
+ * @generated from field: kusinta.iot.common.v1.PairingErrorDetail error = 3;
984
+ */
985
+ error?: PairingErrorDetail | undefined;
986
+
987
+ /**
988
+ * When the window closes, if it opened. Lets the gateway expire its own record against the
989
+ * connector's clock rather than a guess — the connector is the party that clamped it.
990
+ *
991
+ * @generated from field: google.protobuf.Timestamp expires_at = 4;
992
+ */
993
+ expiresAt?: Timestamp | undefined;
994
+ };
995
+
996
+ /**
997
+ * Describes the message kusinta.iot.connector.v1.PairingModeResult.
998
+ * Use `create(PairingModeResultSchema)` to create a new message.
999
+ */
1000
+ export declare const PairingModeResultSchema: GenMessage<PairingModeResult>;
1001
+
1002
+ /**
1003
+ * What the window produced, connector → gateway, sent once when it closes.
1004
+ *
1005
+ * Without this the connector has no way to report anything it learned after the window
1006
+ * opened: a device that joined and cannot be modelled, or one that joined and was not the
1007
+ * device the hint named. Neither can travel on a DeviceAnnouncement — the first has nothing
1008
+ * announceable, and the second is announced but unattributed, which says a device arrived
1009
+ * and not why it was refused.
1010
+ *
1011
+ * It also gives a batch window a definite end. Counting announcements cannot distinguish
1012
+ * "three of five so far" from "three of five, and that is all".
1013
+ *
1014
+ * @generated from message kusinta.iot.connector.v1.PairingModeEnded
1015
+ */
1016
+ export declare type PairingModeEnded = Message<"kusinta.iot.connector.v1.PairingModeEnded"> & {
1017
+ /**
1018
+ * @generated from field: string request_id = 1;
1019
+ */
1020
+ requestId: string;
1021
+
1022
+ /**
1023
+ * How many arrivals this connector attributed to the request. The gateway can count the
1024
+ * announcements it received, but only the connector knows it has stopped.
1025
+ *
1026
+ * @generated from field: uint32 devices_attributed = 2;
1027
+ */
1028
+ devicesAttributed: number;
1029
+
1030
+ /**
1031
+ * Why it produced fewer than asked for, absent when it produced them all. DEVICE_UNUSABLE
1032
+ * and WRONG_DEVICE are reported here and should name the device in the message, since that
1033
+ * is the only place a user learns which device is now sitting on their hub.
1034
+ *
1035
+ * @generated from field: kusinta.iot.common.v1.PairingErrorDetail error = 3;
1036
+ */
1037
+ error?: PairingErrorDetail | undefined;
1038
+ };
1039
+
1040
+ /**
1041
+ * Describes the message kusinta.iot.connector.v1.PairingModeEnded.
1042
+ * Use `create(PairingModeEndedSchema)` to create a new message.
1043
+ */
1044
+ export declare const PairingModeEndedSchema: GenMessage<PairingModeEnded>;
1045
+
312
1046
  /**
313
1047
  * @generated from message kusinta.iot.connector.v1.SessionRequest
314
1048
  */
@@ -368,6 +1102,44 @@ export declare type SessionRequest = Message<"kusinta.iot.connector.v1.SessionRe
368
1102
  */
369
1103
  value: DeviceEventBatch;
370
1104
  case: "deviceEvents";
1105
+ } | {
1106
+ /**
1107
+ * @generated from field: kusinta.iot.connector.v1.PairingModeResult pairing_mode_result = 10;
1108
+ */
1109
+ value: PairingModeResult;
1110
+ case: "pairingModeResult";
1111
+ } | {
1112
+ /**
1113
+ * @generated from field: kusinta.iot.connector.v1.PairingModeEnded pairing_mode_ended = 11;
1114
+ */
1115
+ value: PairingModeEnded;
1116
+ case: "pairingModeEnded";
1117
+ } | {
1118
+ /**
1119
+ * @generated from field: kusinta.iot.connector.v1.LinkResult link_result = 12;
1120
+ */
1121
+ value: LinkResult;
1122
+ case: "linkResult";
1123
+ } | {
1124
+ /**
1125
+ * @generated from field: kusinta.iot.connector.v1.LinksReported links_reported = 13;
1126
+ */
1127
+ value: LinksReported;
1128
+ case: "linksReported";
1129
+ } | {
1130
+ /**
1131
+ * The backend's health; see BackendHealthReport.
1132
+ *
1133
+ * @generated from field: kusinta.iot.connector.v1.BackendHealthReport backend_health = 14;
1134
+ */
1135
+ value: BackendHealthReport;
1136
+ case: "backendHealth";
1137
+ } | {
1138
+ /**
1139
+ * @generated from field: kusinta.iot.connector.v1.ReinitializeBackendResult reinitialize_backend_result = 15;
1140
+ */
1141
+ value: ReinitializeBackendResult;
1142
+ case: "reinitializeBackendResult";
371
1143
  } | { case: undefined; value?: undefined };
372
1144
  };
373
1145
 
@@ -433,6 +1205,64 @@ export declare type SessionResponse = Message<"kusinta.iot.connector.v1.SessionR
433
1205
  */
434
1206
  value: AttributeWriteRequest;
435
1207
  case: "executeAttributeWrite";
1208
+ } | {
1209
+ /**
1210
+ * The connector-leg half of the pairing flow. See EnterPairingMode.
1211
+ *
1212
+ * @generated from field: kusinta.iot.connector.v1.EnterPairingMode enter_pairing_mode = 10;
1213
+ */
1214
+ value: EnterPairingMode;
1215
+ case: "enterPairingMode";
1216
+ } | {
1217
+ /**
1218
+ * The link operations. Separate cases rather than one with a verb, so a
1219
+ * connector that models none of them fails to match rather than having to
1220
+ * decode a request it cannot serve.
1221
+ *
1222
+ * @generated from field: kusinta.iot.connector.v1.CreateLink create_link = 11;
1223
+ */
1224
+ value: CreateLink;
1225
+ case: "createLink";
1226
+ } | {
1227
+ /**
1228
+ * @generated from field: kusinta.iot.connector.v1.RemoveLink remove_link = 12;
1229
+ */
1230
+ value: RemoveLink;
1231
+ case: "removeLink";
1232
+ } | {
1233
+ /**
1234
+ * @generated from field: kusinta.iot.connector.v1.ListLinks list_links = 13;
1235
+ */
1236
+ value: ListLinks;
1237
+ case: "listLinks";
1238
+ } | {
1239
+ /**
1240
+ * See ReinitializeBackend.
1241
+ *
1242
+ * @generated from field: kusinta.iot.connector.v1.ReinitializeBackend reinitialize_backend = 14;
1243
+ */
1244
+ value: ReinitializeBackend;
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";
436
1266
  } | { case: undefined; value?: undefined };
437
1267
  };
438
1268
 
@@ -442,3 +1272,44 @@ export declare type SessionResponse = Message<"kusinta.iot.connector.v1.SessionR
442
1272
  */
443
1273
  export declare const SessionResponseSchema: GenMessage<SessionResponse>;
444
1274
 
1275
+ /**
1276
+ * @generated from enum kusinta.iot.connector.v1.ReinitializeOutcome
1277
+ */
1278
+ export enum ReinitializeOutcome {
1279
+ /**
1280
+ * Not stated, or a value this gateway's schema does not know. Read as FAILED.
1281
+ *
1282
+ * @generated from enum value: REINITIALIZE_OUTCOME_UNSPECIFIED = 0;
1283
+ */
1284
+ UNSPECIFIED = 0,
1285
+
1286
+ /**
1287
+ * The connection was dropped and an attempt to establish it again has finished. Its
1288
+ * outcome is the BackendHealthReport sent just before.
1289
+ *
1290
+ * @generated from enum value: REINITIALIZE_OUTCOME_DONE = 1;
1291
+ */
1292
+ DONE = 1,
1293
+
1294
+ /**
1295
+ * The connector could not attempt it at all — no configuration to reconnect with, a fault
1296
+ * of its own. Health is unchanged and no report precedes this.
1297
+ *
1298
+ * @generated from enum value: REINITIALIZE_OUTCOME_FAILED = 2;
1299
+ */
1300
+ FAILED = 2,
1301
+
1302
+ /**
1303
+ * The connector has no backend connection it can re-initialise. A connector that answers
1304
+ * this should not declare supports_backend_reinitialize, but the gateway must handle it.
1305
+ *
1306
+ * @generated from enum value: REINITIALIZE_OUTCOME_NOT_SUPPORTED = 3;
1307
+ */
1308
+ NOT_SUPPORTED = 3,
1309
+ }
1310
+
1311
+ /**
1312
+ * Describes the enum kusinta.iot.connector.v1.ReinitializeOutcome.
1313
+ */
1314
+ export declare const ReinitializeOutcomeSchema: GenEnum<ReinitializeOutcome>;
1315
+