@kusinta/iot-schema 0.1.0-beta.9 → 0.2.0-beta.10
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 +19 -2
- package/src/kusinta/iot/access/v1/acl_pb.d.ts +230 -11
- package/src/kusinta/iot/access/v1/acl_pb.js +26 -5
- package/src/kusinta/iot/access/v1/roles_pb.d.ts +95 -2
- package/src/kusinta/iot/access/v1/roles_pb.js +37 -1
- package/src/kusinta/iot/common/v1/pairing_pb.d.ts +201 -0
- package/src/kusinta/iot/common/v1/pairing_pb.js +50 -0
- package/src/kusinta/iot/connector/v1/connector_pb.d.ts +481 -34
- package/src/kusinta/iot/connector/v1/connector_pb.js +81 -22
- package/src/kusinta/iot/connector/v1/connector_service_pb.d.ts +5 -5
- package/src/kusinta/iot/connector/v1/connector_service_pb.js +1 -1
- package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +263 -0
- package/src/kusinta/iot/device/v1/cluster_state_pb.js +54 -0
- package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +53 -9
- package/src/kusinta/iot/device/v1/descriptor_pb.js +3 -1
- package/src/kusinta/iot/device/v1/device_event_pb.d.ts +162 -0
- package/src/kusinta/iot/device/v1/device_event_pb.js +45 -0
- package/src/kusinta/iot/device/v1/device_pb.d.ts +185 -28
- package/src/kusinta/iot/device/v1/device_pb.js +10 -2
- package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +110 -0
- package/src/kusinta/iot/device/v1/matter_options_pb.js +118 -0
- package/src/kusinta/iot/device/v1/properties_pb.d.ts +240 -205
- package/src/kusinta/iot/device/v1/properties_pb.js +9 -1
- package/src/kusinta/iot/device/v1/property_update_pb.d.ts +197 -8
- package/src/kusinta/iot/device/v1/property_update_pb.js +20 -2
- package/src/kusinta/iot/link/v1/link_pb.d.ts +419 -0
- package/src/kusinta/iot/link/v1/link_pb.js +121 -0
- package/src/kusinta/iot/registration/v1/registration_pb.d.ts +170 -0
- package/src/kusinta/iot/registration/v1/registration_pb.js +61 -0
- package/src/kusinta/iot/registration/v1/registration_service_pb.d.ts +34 -0
- package/src/kusinta/iot/registration/v1/registration_service_pb.js +19 -0
- package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +320 -0
- package/src/kusinta/iot/signaling/v1/signaling_pb.js +83 -0
- package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +34 -0
- package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +19 -0
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +202 -35
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +14 -6
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +71 -0
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +75 -0
- package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +152 -0
- package/src/kusinta/iot/webrtc/v1/app_token_pb.js +28 -0
- package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +277 -39
- package/src/kusinta/iot/webrtc/v1/command_pb.js +29 -2
- package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +76 -7
- package/src/kusinta/iot/webrtc/v1/device_state_pb.js +20 -5
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +603 -25
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +99 -5
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +627 -0
- package/src/kusinta/iot/webrtc/v1/management_pb.js +135 -0
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +7 -1
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +2 -2
- package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.d.ts +63 -0
- package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.js +45 -0
|
@@ -6,10 +6,13 @@ import type { 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 { ConnectorTransport } from "../../common/v1/types_pb.js";
|
|
9
|
-
import type {
|
|
9
|
+
import type { Device } from "../../device/v1/device_pb.js";
|
|
10
|
+
import type { DeviceLink, LinkFunction, LinkState } from "../../link/v1/link_pb.js";
|
|
10
11
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
12
|
+
import type { AttributeWriteRequest, CommandError, DeviceCommand } from "../../webrtc/v1/command_pb.js";
|
|
13
|
+
import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
|
|
11
14
|
import type { PropertyUpdateBatch } from "../../device/v1/property_update_pb.js";
|
|
12
|
-
import type {
|
|
15
|
+
import type { DeviceEventBatch } from "../../device/v1/device_event_pb.js";
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* Describes the file kusinta/iot/connector/v1/connector.proto.
|
|
@@ -69,9 +72,25 @@ export declare type ConnectorHandshake = Message<"kusinta.iot.connector.v1.Conne
|
|
|
69
72
|
info?: ConnectorInfo | undefined;
|
|
70
73
|
|
|
71
74
|
/**
|
|
72
|
-
* @generated from field: repeated kusinta.iot.device.v1.
|
|
75
|
+
* @generated from field: repeated kusinta.iot.device.v1.Device known_devices = 2;
|
|
73
76
|
*/
|
|
74
|
-
knownDevices:
|
|
77
|
+
knownDevices: Device[];
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Every link the hub currently holds, reported the way known_devices is.
|
|
81
|
+
*
|
|
82
|
+
* Links are hub state, not gateway state: they outlive a connector restart and
|
|
83
|
+
* can be changed by anyone with access to the hub. The gateway's records are a
|
|
84
|
+
* statement of intent that can drift, so the handshake is the moment to
|
|
85
|
+
* reconcile them against what is really there. A link in the gateway's records
|
|
86
|
+
* and not here has gone; one here and not in the records was made elsewhere.
|
|
87
|
+
*
|
|
88
|
+
* Empty means "states nothing" — a connector that does not model linking is not
|
|
89
|
+
* asserting that no links exist.
|
|
90
|
+
*
|
|
91
|
+
* @generated from field: repeated kusinta.iot.link.v1.DeviceLink known_links = 3;
|
|
92
|
+
*/
|
|
93
|
+
knownLinks: DeviceLink[];
|
|
75
94
|
};
|
|
76
95
|
|
|
77
96
|
/**
|
|
@@ -80,6 +99,163 @@ export declare type ConnectorHandshake = Message<"kusinta.iot.connector.v1.Conne
|
|
|
80
99
|
*/
|
|
81
100
|
export declare const ConnectorHandshakeSchema: GenMessage<ConnectorHandshake>;
|
|
82
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Asks the connector to make a link, gateway to connector.
|
|
104
|
+
*
|
|
105
|
+
* Names two devices and a function; resolving that into whatever set of
|
|
106
|
+
* underlying connections the hub needs is the connector's work. It is expected to
|
|
107
|
+
* build the set atomically and roll back a partial one, because a half-built set
|
|
108
|
+
* is a link that lists as healthy and carries nothing.
|
|
109
|
+
*
|
|
110
|
+
* The connector is also expected to repair whatever the operation disturbs. On at
|
|
111
|
+
* least one vendor, both making and removing a link leaves the receiving device
|
|
112
|
+
* in a state it was not in before, with settings that must be captured
|
|
113
|
+
* beforehand and put back after.
|
|
114
|
+
*
|
|
115
|
+
* @generated from message kusinta.iot.connector.v1.CreateLink
|
|
116
|
+
*/
|
|
117
|
+
export declare type CreateLink = Message<"kusinta.iot.connector.v1.CreateLink"> & {
|
|
118
|
+
/**
|
|
119
|
+
* assigned by the gateway, echoed in the result
|
|
120
|
+
*
|
|
121
|
+
* @generated from field: string link_id = 1;
|
|
122
|
+
*/
|
|
123
|
+
linkId: string;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId sender = 2;
|
|
127
|
+
*/
|
|
128
|
+
sender?: DeviceId | undefined;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 3;
|
|
132
|
+
*/
|
|
133
|
+
receiver?: DeviceId | undefined;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @generated from field: kusinta.iot.link.v1.LinkFunction function = 4;
|
|
137
|
+
*/
|
|
138
|
+
function: LinkFunction;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Describes the message kusinta.iot.connector.v1.CreateLink.
|
|
143
|
+
* Use `create(CreateLinkSchema)` to create a new message.
|
|
144
|
+
*/
|
|
145
|
+
export declare const CreateLinkSchema: GenMessage<CreateLink>;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Asks the connector to remove a link it previously made.
|
|
149
|
+
*
|
|
150
|
+
* @generated from message kusinta.iot.connector.v1.RemoveLink
|
|
151
|
+
*/
|
|
152
|
+
export declare type RemoveLink = Message<"kusinta.iot.connector.v1.RemoveLink"> & {
|
|
153
|
+
/**
|
|
154
|
+
* @generated from field: string link_id = 1;
|
|
155
|
+
*/
|
|
156
|
+
linkId: string;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId sender = 2;
|
|
160
|
+
*/
|
|
161
|
+
sender?: DeviceId | undefined;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 3;
|
|
165
|
+
*/
|
|
166
|
+
receiver?: DeviceId | undefined;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @generated from field: kusinta.iot.link.v1.LinkFunction function = 4;
|
|
170
|
+
*/
|
|
171
|
+
function: LinkFunction;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Describes the message kusinta.iot.connector.v1.RemoveLink.
|
|
176
|
+
* Use `create(RemoveLinkSchema)` to create a new message.
|
|
177
|
+
*/
|
|
178
|
+
export declare const RemoveLinkSchema: GenMessage<RemoveLink>;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Asks the connector what links the hub holds, for reconciliation outside a
|
|
182
|
+
* handshake.
|
|
183
|
+
*
|
|
184
|
+
* @generated from message kusinta.iot.connector.v1.ListLinks
|
|
185
|
+
*/
|
|
186
|
+
export declare type ListLinks = Message<"kusinta.iot.connector.v1.ListLinks"> & {
|
|
187
|
+
/**
|
|
188
|
+
* Unset asks for every link the hub holds.
|
|
189
|
+
*
|
|
190
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
|
|
191
|
+
*/
|
|
192
|
+
deviceId?: DeviceId | undefined;
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Describes the message kusinta.iot.connector.v1.ListLinks.
|
|
197
|
+
* Use `create(ListLinksSchema)` to create a new message.
|
|
198
|
+
*/
|
|
199
|
+
export declare const ListLinksSchema: GenMessage<ListLinks>;
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* What became of a CreateLink or RemoveLink, connector to gateway.
|
|
203
|
+
*
|
|
204
|
+
* Reports the link's observed state rather than merely whether the call was
|
|
205
|
+
* accepted. A hub will report a link as present and healthy while the devices
|
|
206
|
+
* ignore it, so "the request did not fail" is not the same claim as "the link is
|
|
207
|
+
* carrying" and must not be encoded as though it were.
|
|
208
|
+
*
|
|
209
|
+
* @generated from message kusinta.iot.connector.v1.LinkResult
|
|
210
|
+
*/
|
|
211
|
+
export declare type LinkResult = Message<"kusinta.iot.connector.v1.LinkResult"> & {
|
|
212
|
+
/**
|
|
213
|
+
* @generated from field: string link_id = 1;
|
|
214
|
+
*/
|
|
215
|
+
linkId: string;
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* @generated from field: bool success = 2;
|
|
219
|
+
*/
|
|
220
|
+
success: boolean;
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* @generated from field: kusinta.iot.link.v1.LinkState state = 3;
|
|
224
|
+
*/
|
|
225
|
+
state: LinkState;
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Why not, when success is false. For a person; never parsed.
|
|
229
|
+
*
|
|
230
|
+
* @generated from field: string detail = 4;
|
|
231
|
+
*/
|
|
232
|
+
detail: string;
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Describes the message kusinta.iot.connector.v1.LinkResult.
|
|
237
|
+
* Use `create(LinkResultSchema)` to create a new message.
|
|
238
|
+
*/
|
|
239
|
+
export declare const LinkResultSchema: GenMessage<LinkResult>;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Every link the hub holds, connector to gateway, in reply to ListLinks.
|
|
243
|
+
*
|
|
244
|
+
* @generated from message kusinta.iot.connector.v1.LinksReported
|
|
245
|
+
*/
|
|
246
|
+
export declare type LinksReported = Message<"kusinta.iot.connector.v1.LinksReported"> & {
|
|
247
|
+
/**
|
|
248
|
+
* @generated from field: repeated kusinta.iot.link.v1.DeviceLink links = 1;
|
|
249
|
+
*/
|
|
250
|
+
links: DeviceLink[];
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Describes the message kusinta.iot.connector.v1.LinksReported.
|
|
255
|
+
* Use `create(LinksReportedSchema)` to create a new message.
|
|
256
|
+
*/
|
|
257
|
+
export declare const LinksReportedSchema: GenMessage<LinksReported>;
|
|
258
|
+
|
|
83
259
|
/**
|
|
84
260
|
* @generated from message kusinta.iot.connector.v1.HandshakeAck
|
|
85
261
|
*/
|
|
@@ -107,13 +283,39 @@ export declare type HandshakeAck = Message<"kusinta.iot.connector.v1.HandshakeAc
|
|
|
107
283
|
export declare const HandshakeAckSchema: GenMessage<HandshakeAck>;
|
|
108
284
|
|
|
109
285
|
/**
|
|
286
|
+
* A device the connector has found. Carries the full Device, not just its descriptor,
|
|
287
|
+
* because a device's endpoints are what say which Matter device types it presents — and
|
|
288
|
+
* without them the gateway cannot resolve any PropertyUpdate the device goes on to send.
|
|
289
|
+
*
|
|
290
|
+
* Properties may be unset on every endpoint; that means the device exists and has
|
|
291
|
+
* reported nothing yet, which is the normal state at announcement.
|
|
292
|
+
*
|
|
110
293
|
* @generated from message kusinta.iot.connector.v1.DeviceAnnouncement
|
|
111
294
|
*/
|
|
112
295
|
export declare type DeviceAnnouncement = Message<"kusinta.iot.connector.v1.DeviceAnnouncement"> & {
|
|
113
296
|
/**
|
|
114
|
-
* @generated from field: kusinta.iot.device.v1.
|
|
297
|
+
* @generated from field: kusinta.iot.device.v1.Device device = 2;
|
|
115
298
|
*/
|
|
116
|
-
|
|
299
|
+
device?: Device | undefined;
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* The pairing request this device arrived for, empty for a device that arrived on its own.
|
|
303
|
+
*
|
|
304
|
+
* This field is the whole attribution mechanism. A connector is the only party that knows
|
|
305
|
+
* when its own hub was accepting devices, so it decides whether an arrival belongs to a
|
|
306
|
+
* request and says so here.
|
|
307
|
+
*
|
|
308
|
+
* Set it only when the arrival was actually checked. An arrival that fails the check is
|
|
309
|
+
* still announced — the device exists and has joined — but with this empty, which files it
|
|
310
|
+
* as belonging to nobody rather than to the wrong person.
|
|
311
|
+
*
|
|
312
|
+
* This is EnterPairingMode.request_id, minted per connector, and NOT an app message id:
|
|
313
|
+
* whoever forwards the outcome to the app has to map it back. The name avoids `in_reply_to`
|
|
314
|
+
* for that reason, which everywhere else in this schema means the app's own message id.
|
|
315
|
+
*
|
|
316
|
+
* @generated from field: string pairing_request_id = 3;
|
|
317
|
+
*/
|
|
318
|
+
pairingRequestId: string;
|
|
117
319
|
};
|
|
118
320
|
|
|
119
321
|
/**
|
|
@@ -188,6 +390,15 @@ export declare type UnsubscribeDevice = Message<"kusinta.iot.connector.v1.Unsubs
|
|
|
188
390
|
export declare const UnsubscribeDeviceSchema: GenMessage<UnsubscribeDevice>;
|
|
189
391
|
|
|
190
392
|
/**
|
|
393
|
+
* Session-level error, gateway → connector. NOT how a command or a write fails: that is
|
|
394
|
+
* an ordinary ConnectorCommandResult with success = false and a typed CommandError, and
|
|
395
|
+
* one operation failing says nothing about the session, which continues.
|
|
396
|
+
*
|
|
397
|
+
* code stays a free-form string here, unlike webrtc.v1.GatewayError's closed
|
|
398
|
+
* GatewayErrorCode and unlike the CommandError below. A connector is versioned on its own
|
|
399
|
+
* schedule and one may be a third party's, so the set of things that can go wrong between
|
|
400
|
+
* a gateway and a connector is not closed the way the app leg's is.
|
|
401
|
+
*
|
|
191
402
|
* @generated from message kusinta.iot.connector.v1.GatewayError
|
|
192
403
|
*/
|
|
193
404
|
export declare type GatewayError = Message<"kusinta.iot.connector.v1.GatewayError"> & {
|
|
@@ -202,11 +413,11 @@ export declare type GatewayError = Message<"kusinta.iot.connector.v1.GatewayErro
|
|
|
202
413
|
message: string;
|
|
203
414
|
|
|
204
415
|
/**
|
|
205
|
-
* non-empty if the error
|
|
416
|
+
* non-empty if the error refers to a specific request
|
|
206
417
|
*
|
|
207
|
-
* @generated from field: string
|
|
418
|
+
* @generated from field: string request_id = 3;
|
|
208
419
|
*/
|
|
209
|
-
|
|
420
|
+
requestId: string;
|
|
210
421
|
};
|
|
211
422
|
|
|
212
423
|
/**
|
|
@@ -216,13 +427,20 @@ export declare type GatewayError = Message<"kusinta.iot.connector.v1.GatewayErro
|
|
|
216
427
|
export declare const GatewayErrorSchema: GenMessage<GatewayError>;
|
|
217
428
|
|
|
218
429
|
/**
|
|
219
|
-
*
|
|
430
|
+
* A connector's answer to an executed command OR attribute write. One message for both:
|
|
431
|
+
* the two operations differ in what they do to a device, not in how a connector reports
|
|
432
|
+
* having done it, and request_id says which request this answers either way.
|
|
433
|
+
*
|
|
434
|
+
* @generated from message kusinta.iot.connector.v1.ConnectorCommandResult
|
|
220
435
|
*/
|
|
221
|
-
export declare type
|
|
436
|
+
export declare type ConnectorCommandResult = Message<"kusinta.iot.connector.v1.ConnectorCommandResult"> & {
|
|
222
437
|
/**
|
|
223
|
-
*
|
|
438
|
+
* Was command_id. Renamed with webrtc.v1.DeviceCommand.request_id, which it mirrors, and
|
|
439
|
+
* because it now correlates writes as well as commands.
|
|
440
|
+
*
|
|
441
|
+
* @generated from field: string request_id = 1;
|
|
224
442
|
*/
|
|
225
|
-
|
|
443
|
+
requestId: string;
|
|
226
444
|
|
|
227
445
|
/**
|
|
228
446
|
* @generated from field: bool success = 2;
|
|
@@ -230,26 +448,186 @@ export declare type CommandResult = Message<"kusinta.iot.connector.v1.CommandRes
|
|
|
230
448
|
success: boolean;
|
|
231
449
|
|
|
232
450
|
/**
|
|
233
|
-
* @generated from field:
|
|
451
|
+
* @generated from field: google.protobuf.Timestamp completed_at = 4;
|
|
452
|
+
*/
|
|
453
|
+
completedAt?: Timestamp | undefined;
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* Why it failed, in the same closed vocabulary the app is eventually given. The gateway
|
|
457
|
+
* forwards this into webrtc.v1.CommandResult.error unchanged; it does not translate.
|
|
458
|
+
*
|
|
459
|
+
* Shared rather than mirrored on purpose. The free-form string this replaces left every
|
|
460
|
+
* connector to invent its own spellings ("TIMEOUT", "UNSUPPORTED_MODE") and the gateway
|
|
461
|
+
* to keep a mapping table that silently fell behind whenever a connector coined a new
|
|
462
|
+
* one — which is the drift a closed vocabulary exists to prevent.
|
|
463
|
+
*
|
|
464
|
+
* A connector produces the subset it can actually observe: REJECTED_BY_DEVICE,
|
|
465
|
+
* UNREACHABLE, TIMEOUT, INVALID_COMMAND, INTERNAL. NOT_ENTITLED and
|
|
466
|
+
* CONSTRAINT_VIOLATED are the gateway's, decided before a command is forwarded at all;
|
|
467
|
+
* a connector never sees the caller's permissions and must not claim to.
|
|
468
|
+
*
|
|
469
|
+
* Rollout note: a connector whose schema predates this sends nothing on field 5 and the
|
|
470
|
+
* gateway reads UNSPECIFIED. Set success = false with no code and the meaning is "it
|
|
471
|
+
* failed, reason unstated" — which is what the string codes amounted to anyway.
|
|
472
|
+
*
|
|
473
|
+
* @generated from field: kusinta.iot.webrtc.v1.CommandError error = 5;
|
|
234
474
|
*/
|
|
235
|
-
error?:
|
|
475
|
+
error?: CommandError | undefined;
|
|
236
476
|
|
|
237
477
|
/**
|
|
238
|
-
*
|
|
478
|
+
* When this connector's own optimistic window closes: by this time the value has either
|
|
479
|
+
* been confirmed by the device or restored, and either way the connector will have
|
|
480
|
+
* published a PropertyUpdate saying so.
|
|
481
|
+
*
|
|
482
|
+
* Set it when the connector applied the value optimistically and runs a rollback timer
|
|
483
|
+
* of its own — a downstream device with a known, device-specific timeout. The gateway
|
|
484
|
+
* carries it into webrtc.v1.CommandResult.settles_by instead of applying a fixed guess:
|
|
485
|
+
* the connector is the only party that knows the timer, and a gateway-side constant
|
|
486
|
+
* chasing it is the same hardcoded-window problem one level up.
|
|
487
|
+
*
|
|
488
|
+
* Absent means no claim — either the connector confirms synchronously, or it cannot
|
|
489
|
+
* state a bound. Absent is NOT "settles immediately", and the gateway is free to fall
|
|
490
|
+
* back to a deadline of its own when nothing is stated here.
|
|
491
|
+
*
|
|
492
|
+
* This bounds the wait; it does not label the values that arrive. Which update was the
|
|
493
|
+
* optimistic one is device.v1.PropertyUpdate.provenance.
|
|
494
|
+
*
|
|
495
|
+
* @generated from field: optional google.protobuf.Timestamp settles_by = 6;
|
|
239
496
|
*/
|
|
240
|
-
|
|
497
|
+
settlesBy?: Timestamp | undefined;
|
|
498
|
+
};
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* Describes the message kusinta.iot.connector.v1.ConnectorCommandResult.
|
|
502
|
+
* Use `create(ConnectorCommandResultSchema)` to create a new message.
|
|
503
|
+
*/
|
|
504
|
+
export declare const ConnectorCommandResultSchema: GenMessage<ConnectorCommandResult>;
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Tells a connector to accept new devices for a while, gateway → connector.
|
|
508
|
+
*
|
|
509
|
+
* Named for what the connector does rather than for what the app asked. The two legs are
|
|
510
|
+
* named differently on purpose: the app starts one pairing, and the gateway may put several
|
|
511
|
+
* connectors into pairing mode to serve it.
|
|
512
|
+
*
|
|
513
|
+
* @generated from message kusinta.iot.connector.v1.EnterPairingMode
|
|
514
|
+
*/
|
|
515
|
+
export declare type EnterPairingMode = Message<"kusinta.iot.connector.v1.EnterPairingMode"> & {
|
|
516
|
+
/**
|
|
517
|
+
* echoed on PairingModeResult, PairingModeEnded and the announcement
|
|
518
|
+
*
|
|
519
|
+
* @generated from field: string request_id = 1;
|
|
520
|
+
*/
|
|
521
|
+
requestId: string;
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* How long, which device, how many. See PairingWindow — and clamp the duration again here.
|
|
525
|
+
* A connector is the last thing standing between a number on the wire and a radio that
|
|
526
|
+
* accepts anything nearby for that long.
|
|
527
|
+
*
|
|
528
|
+
* @generated from field: kusinta.iot.common.v1.PairingWindow window = 2;
|
|
529
|
+
*/
|
|
530
|
+
window?: PairingWindow | undefined;
|
|
531
|
+
};
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* Describes the message kusinta.iot.connector.v1.EnterPairingMode.
|
|
535
|
+
* Use `create(EnterPairingModeSchema)` to create a new message.
|
|
536
|
+
*/
|
|
537
|
+
export declare const EnterPairingModeSchema: GenMessage<EnterPairingMode>;
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* A connector's answer to EnterPairingMode: whether the window opened, and nothing more.
|
|
541
|
+
*
|
|
542
|
+
* The same accept-now-report-later split as ConnectorCommandResult, for the same reason — a
|
|
543
|
+
* connector that waited for a device to wake before answering would blow every deadline
|
|
544
|
+
* above it. What the window produced arrives later, as PairingModeEnded.
|
|
545
|
+
*
|
|
546
|
+
* @generated from message kusinta.iot.connector.v1.PairingModeResult
|
|
547
|
+
*/
|
|
548
|
+
export declare type PairingModeResult = Message<"kusinta.iot.connector.v1.PairingModeResult"> & {
|
|
549
|
+
/**
|
|
550
|
+
* @generated from field: string request_id = 1;
|
|
551
|
+
*/
|
|
552
|
+
requestId: string;
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* @generated from field: bool accepted = 2;
|
|
556
|
+
*/
|
|
557
|
+
accepted: boolean;
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Why the window did not open. Only what a connector can observe at this point:
|
|
561
|
+
* CONNECTOR_UNAVAILABLE, INTERNAL. NOT_ENTITLED and ALREADY_IN_PROGRESS are the gateway's,
|
|
562
|
+
* decided before this message is sent, and a connector must not claim them.
|
|
563
|
+
*
|
|
564
|
+
* @generated from field: kusinta.iot.common.v1.PairingErrorDetail error = 3;
|
|
565
|
+
*/
|
|
566
|
+
error?: PairingErrorDetail | undefined;
|
|
567
|
+
|
|
568
|
+
/**
|
|
569
|
+
* When the window closes, if it opened. Lets the gateway expire its own record against the
|
|
570
|
+
* connector's clock rather than a guess — the connector is the party that clamped it.
|
|
571
|
+
*
|
|
572
|
+
* @generated from field: google.protobuf.Timestamp expires_at = 4;
|
|
573
|
+
*/
|
|
574
|
+
expiresAt?: Timestamp | undefined;
|
|
241
575
|
};
|
|
242
576
|
|
|
243
577
|
/**
|
|
244
|
-
* Describes the message kusinta.iot.connector.v1.
|
|
245
|
-
* Use `create(
|
|
578
|
+
* Describes the message kusinta.iot.connector.v1.PairingModeResult.
|
|
579
|
+
* Use `create(PairingModeResultSchema)` to create a new message.
|
|
246
580
|
*/
|
|
247
|
-
export declare const
|
|
581
|
+
export declare const PairingModeResultSchema: GenMessage<PairingModeResult>;
|
|
248
582
|
|
|
249
583
|
/**
|
|
250
|
-
*
|
|
584
|
+
* What the window produced, connector → gateway, sent once when it closes.
|
|
585
|
+
*
|
|
586
|
+
* Without this the connector has no way to report anything it learned after the window
|
|
587
|
+
* opened: a device that joined and cannot be modelled, or one that joined and was not the
|
|
588
|
+
* device the hint named. Neither can travel on a DeviceAnnouncement — the first has nothing
|
|
589
|
+
* announceable, and the second is announced but unattributed, which says a device arrived
|
|
590
|
+
* and not why it was refused.
|
|
591
|
+
*
|
|
592
|
+
* It also gives a batch window a definite end. Counting announcements cannot distinguish
|
|
593
|
+
* "three of five so far" from "three of five, and that is all".
|
|
594
|
+
*
|
|
595
|
+
* @generated from message kusinta.iot.connector.v1.PairingModeEnded
|
|
251
596
|
*/
|
|
252
|
-
export declare type
|
|
597
|
+
export declare type PairingModeEnded = Message<"kusinta.iot.connector.v1.PairingModeEnded"> & {
|
|
598
|
+
/**
|
|
599
|
+
* @generated from field: string request_id = 1;
|
|
600
|
+
*/
|
|
601
|
+
requestId: string;
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* How many arrivals this connector attributed to the request. The gateway can count the
|
|
605
|
+
* announcements it received, but only the connector knows it has stopped.
|
|
606
|
+
*
|
|
607
|
+
* @generated from field: uint32 devices_attributed = 2;
|
|
608
|
+
*/
|
|
609
|
+
devicesAttributed: number;
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* Why it produced fewer than asked for, absent when it produced them all. DEVICE_UNUSABLE
|
|
613
|
+
* and WRONG_DEVICE are reported here and should name the device in the message, since that
|
|
614
|
+
* is the only place a user learns which device is now sitting on their hub.
|
|
615
|
+
*
|
|
616
|
+
* @generated from field: kusinta.iot.common.v1.PairingErrorDetail error = 3;
|
|
617
|
+
*/
|
|
618
|
+
error?: PairingErrorDetail | undefined;
|
|
619
|
+
};
|
|
620
|
+
|
|
621
|
+
/**
|
|
622
|
+
* Describes the message kusinta.iot.connector.v1.PairingModeEnded.
|
|
623
|
+
* Use `create(PairingModeEndedSchema)` to create a new message.
|
|
624
|
+
*/
|
|
625
|
+
export declare const PairingModeEndedSchema: GenMessage<PairingModeEnded>;
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* @generated from message kusinta.iot.connector.v1.SessionRequest
|
|
629
|
+
*/
|
|
630
|
+
export declare type SessionRequest = Message<"kusinta.iot.connector.v1.SessionRequest"> & {
|
|
253
631
|
/**
|
|
254
632
|
* @generated from field: string message_id = 1;
|
|
255
633
|
*/
|
|
@@ -261,7 +639,7 @@ export declare type ConnectRequest = Message<"kusinta.iot.connector.v1.ConnectRe
|
|
|
261
639
|
sentAt?: Timestamp | undefined;
|
|
262
640
|
|
|
263
641
|
/**
|
|
264
|
-
* @generated from oneof kusinta.iot.connector.v1.
|
|
642
|
+
* @generated from oneof kusinta.iot.connector.v1.SessionRequest.payload
|
|
265
643
|
*/
|
|
266
644
|
payload: {
|
|
267
645
|
/**
|
|
@@ -289,9 +667,9 @@ export declare type ConnectRequest = Message<"kusinta.iot.connector.v1.ConnectRe
|
|
|
289
667
|
case: "deviceRemoved";
|
|
290
668
|
} | {
|
|
291
669
|
/**
|
|
292
|
-
* @generated from field: kusinta.iot.connector.v1.
|
|
670
|
+
* @generated from field: kusinta.iot.connector.v1.ConnectorCommandResult command_result = 7;
|
|
293
671
|
*/
|
|
294
|
-
value:
|
|
672
|
+
value: ConnectorCommandResult;
|
|
295
673
|
case: "commandResult";
|
|
296
674
|
} | {
|
|
297
675
|
/**
|
|
@@ -299,19 +677,49 @@ export declare type ConnectRequest = Message<"kusinta.iot.connector.v1.ConnectRe
|
|
|
299
677
|
*/
|
|
300
678
|
value: HeartBeat;
|
|
301
679
|
case: "heartbeat";
|
|
680
|
+
} | {
|
|
681
|
+
/**
|
|
682
|
+
* @generated from field: kusinta.iot.device.v1.DeviceEventBatch device_events = 9;
|
|
683
|
+
*/
|
|
684
|
+
value: DeviceEventBatch;
|
|
685
|
+
case: "deviceEvents";
|
|
686
|
+
} | {
|
|
687
|
+
/**
|
|
688
|
+
* @generated from field: kusinta.iot.connector.v1.PairingModeResult pairing_mode_result = 10;
|
|
689
|
+
*/
|
|
690
|
+
value: PairingModeResult;
|
|
691
|
+
case: "pairingModeResult";
|
|
692
|
+
} | {
|
|
693
|
+
/**
|
|
694
|
+
* @generated from field: kusinta.iot.connector.v1.PairingModeEnded pairing_mode_ended = 11;
|
|
695
|
+
*/
|
|
696
|
+
value: PairingModeEnded;
|
|
697
|
+
case: "pairingModeEnded";
|
|
698
|
+
} | {
|
|
699
|
+
/**
|
|
700
|
+
* @generated from field: kusinta.iot.connector.v1.LinkResult link_result = 12;
|
|
701
|
+
*/
|
|
702
|
+
value: LinkResult;
|
|
703
|
+
case: "linkResult";
|
|
704
|
+
} | {
|
|
705
|
+
/**
|
|
706
|
+
* @generated from field: kusinta.iot.connector.v1.LinksReported links_reported = 13;
|
|
707
|
+
*/
|
|
708
|
+
value: LinksReported;
|
|
709
|
+
case: "linksReported";
|
|
302
710
|
} | { case: undefined; value?: undefined };
|
|
303
711
|
};
|
|
304
712
|
|
|
305
713
|
/**
|
|
306
|
-
* Describes the message kusinta.iot.connector.v1.
|
|
307
|
-
* Use `create(
|
|
714
|
+
* Describes the message kusinta.iot.connector.v1.SessionRequest.
|
|
715
|
+
* Use `create(SessionRequestSchema)` to create a new message.
|
|
308
716
|
*/
|
|
309
|
-
export declare const
|
|
717
|
+
export declare const SessionRequestSchema: GenMessage<SessionRequest>;
|
|
310
718
|
|
|
311
719
|
/**
|
|
312
|
-
* @generated from message kusinta.iot.connector.v1.
|
|
720
|
+
* @generated from message kusinta.iot.connector.v1.SessionResponse
|
|
313
721
|
*/
|
|
314
|
-
export declare type
|
|
722
|
+
export declare type SessionResponse = Message<"kusinta.iot.connector.v1.SessionResponse"> & {
|
|
315
723
|
/**
|
|
316
724
|
* @generated from field: string message_id = 1;
|
|
317
725
|
*/
|
|
@@ -323,7 +731,7 @@ export declare type ConnectResponse = Message<"kusinta.iot.connector.v1.ConnectR
|
|
|
323
731
|
sentAt?: Timestamp | undefined;
|
|
324
732
|
|
|
325
733
|
/**
|
|
326
|
-
* @generated from oneof kusinta.iot.connector.v1.
|
|
734
|
+
* @generated from oneof kusinta.iot.connector.v1.SessionResponse.payload
|
|
327
735
|
*/
|
|
328
736
|
payload: {
|
|
329
737
|
/**
|
|
@@ -355,12 +763,51 @@ export declare type ConnectResponse = Message<"kusinta.iot.connector.v1.ConnectR
|
|
|
355
763
|
*/
|
|
356
764
|
value: DeviceCommand;
|
|
357
765
|
case: "executeCommand";
|
|
766
|
+
} | {
|
|
767
|
+
/**
|
|
768
|
+
* The connector-leg half of PERMISSION_ACTION_WRITE. A sibling case rather than another
|
|
769
|
+
* meaning overloaded onto execute_command, which is the mistake this replaces.
|
|
770
|
+
*
|
|
771
|
+
* @generated from field: kusinta.iot.webrtc.v1.AttributeWriteRequest execute_attribute_write = 9;
|
|
772
|
+
*/
|
|
773
|
+
value: AttributeWriteRequest;
|
|
774
|
+
case: "executeAttributeWrite";
|
|
775
|
+
} | {
|
|
776
|
+
/**
|
|
777
|
+
* The connector-leg half of the pairing flow. See EnterPairingMode.
|
|
778
|
+
*
|
|
779
|
+
* @generated from field: kusinta.iot.connector.v1.EnterPairingMode enter_pairing_mode = 10;
|
|
780
|
+
*/
|
|
781
|
+
value: EnterPairingMode;
|
|
782
|
+
case: "enterPairingMode";
|
|
783
|
+
} | {
|
|
784
|
+
/**
|
|
785
|
+
* The link operations. Separate cases rather than one with a verb, so a
|
|
786
|
+
* connector that models none of them fails to match rather than having to
|
|
787
|
+
* decode a request it cannot serve.
|
|
788
|
+
*
|
|
789
|
+
* @generated from field: kusinta.iot.connector.v1.CreateLink create_link = 11;
|
|
790
|
+
*/
|
|
791
|
+
value: CreateLink;
|
|
792
|
+
case: "createLink";
|
|
793
|
+
} | {
|
|
794
|
+
/**
|
|
795
|
+
* @generated from field: kusinta.iot.connector.v1.RemoveLink remove_link = 12;
|
|
796
|
+
*/
|
|
797
|
+
value: RemoveLink;
|
|
798
|
+
case: "removeLink";
|
|
799
|
+
} | {
|
|
800
|
+
/**
|
|
801
|
+
* @generated from field: kusinta.iot.connector.v1.ListLinks list_links = 13;
|
|
802
|
+
*/
|
|
803
|
+
value: ListLinks;
|
|
804
|
+
case: "listLinks";
|
|
358
805
|
} | { case: undefined; value?: undefined };
|
|
359
806
|
};
|
|
360
807
|
|
|
361
808
|
/**
|
|
362
|
-
* Describes the message kusinta.iot.connector.v1.
|
|
363
|
-
* Use `create(
|
|
809
|
+
* Describes the message kusinta.iot.connector.v1.SessionResponse.
|
|
810
|
+
* Use `create(SessionResponseSchema)` to create a new message.
|
|
364
811
|
*/
|
|
365
|
-
export declare const
|
|
812
|
+
export declare const SessionResponseSchema: GenMessage<SessionResponse>;
|
|
366
813
|
|