@kusinta/iot-schema 0.2.0-beta.2 → 0.2.0-beta.21
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 +11 -1
- package/src/kusinta/iot/access/v1/acl_pb.d.ts +121 -3
- package/src/kusinta/iot/access/v1/acl_pb.js +20 -3
- package/src/kusinta/iot/access/v1/roles_pb.d.ts +102 -0
- package/src/kusinta/iot/access/v1/roles_pb.js +81 -1
- package/src/kusinta/iot/climate/v1/climate_pb.d.ts +726 -0
- package/src/kusinta/iot/climate/v1/climate_pb.js +142 -0
- package/src/kusinta/iot/common/v1/pairing_pb.d.ts +217 -0
- package/src/kusinta/iot/common/v1/pairing_pb.js +50 -0
- package/src/kusinta/iot/common/v1/types_pb.d.ts +34 -0
- package/src/kusinta/iot/common/v1/types_pb.js +22 -1
- package/src/kusinta/iot/connector/v1/connector_pb.d.ts +476 -7
- package/src/kusinta/iot/connector/v1/connector_pb.js +70 -12
- package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +44 -0
- package/src/kusinta/iot/device/v1/cluster_state_pb.js +1 -1
- package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +22 -2
- package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
- package/src/kusinta/iot/device/v1/device_event_pb.d.ts +87 -5
- package/src/kusinta/iot/device/v1/device_event_pb.js +1 -1
- package/src/kusinta/iot/device/v1/device_pb.d.ts +150 -6
- package/src/kusinta/iot/device/v1/device_pb.js +33 -2
- package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +26 -0
- package/src/kusinta/iot/device/v1/matter_options_pb.js +31 -4
- package/src/kusinta/iot/device/v1/properties_pb.d.ts +14 -0
- package/src/kusinta/iot/device/v1/properties_pb.js +1 -1
- package/src/kusinta/iot/device/v1/property_update_pb.d.ts +3 -2
- package/src/kusinta/iot/link/v1/link_pb.d.ts +438 -0
- package/src/kusinta/iot/link/v1/link_pb.js +121 -0
- package/src/kusinta/iot/reporting/v1/reporting_pb.d.ts +891 -0
- package/src/kusinta/iot/reporting/v1/reporting_pb.js +164 -0
- package/src/kusinta/iot/reporting/v1/reporting_service_pb.d.ts +47 -0
- package/src/kusinta/iot/reporting/v1/reporting_service_pb.js +24 -0
- package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +177 -4
- package/src/kusinta/iot/signaling/v1/signaling_pb.js +29 -1
- package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +24 -1
- package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +1 -1
- package/src/kusinta/iot/space/v1/space_pb.d.ts +72 -2
- package/src/kusinta/iot/space/v1/space_pb.js +9 -1
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +162 -13
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +8 -1
- package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.d.ts +69 -0
- package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.js +19 -0
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +25 -4
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +28 -6
- package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +18 -3
- package/src/kusinta/iot/webrtc/v1/command_pb.js +2 -1
- package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +170 -5
- package/src/kusinta/iot/webrtc/v1/device_state_pb.js +34 -6
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +448 -3
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +63 -3
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +775 -12
- package/src/kusinta/iot/webrtc/v1/management_pb.js +123 -5
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +34 -4
- 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
|
@@ -5,8 +5,14 @@
|
|
|
5
5
|
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
7
|
import type { DeviceOwnershipType, SpaceType } from "../../common/v1/types_pb.js";
|
|
8
|
-
import type { DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
|
|
8
|
+
import type { ConnectorId, DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
|
|
9
|
+
import type { MembershipRelation, Role } from "../../access/v1/roles_pb.js";
|
|
10
|
+
import type { LorawanProvisioning } from "../../vendor/lorawan/v1/lorawan_pb.js";
|
|
9
11
|
import type { Space } from "../../space/v1/space_pb.js";
|
|
12
|
+
import type { LinkFunction, LinkMode, LinkSettings } from "../../link/v1/link_pb.js";
|
|
13
|
+
import type { ClimateModeKind, ClimateSummaryPeriod } from "../../climate/v1/climate_pb.js";
|
|
14
|
+
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
15
|
+
import type { ServiceSignal } from "../../access/v1/acl_pb.js";
|
|
10
16
|
|
|
11
17
|
/**
|
|
12
18
|
* Describes the file kusinta/iot/webrtc/v1/management.proto.
|
|
@@ -18,6 +24,10 @@ export declare const file_kusinta_iot_webrtc_v1_management: GenFile;
|
|
|
18
24
|
* stronger request than it looks: there is no parent whose reach could authorize
|
|
19
25
|
* it, so it is reserved to the gateway's administrator.
|
|
20
26
|
*
|
|
27
|
+
* Under an apartment only a room may be created. Creating in a home is guarded as
|
|
28
|
+
* UpdateSpace is, and refused whatever the caller where UpdateSpace's structure rules would
|
|
29
|
+
* refuse it.
|
|
30
|
+
*
|
|
21
31
|
* @generated from message kusinta.iot.webrtc.v1.CreateSpace
|
|
22
32
|
*/
|
|
23
33
|
export declare type CreateSpace = Message<"kusinta.iot.webrtc.v1.CreateSpace"> & {
|
|
@@ -49,6 +59,14 @@ export declare type CreateSpace = Message<"kusinta.iot.webrtc.v1.CreateSpace"> &
|
|
|
49
59
|
* @generated from field: kusinta.iot.identity.v1.SpaceId parent_space_id = 5;
|
|
50
60
|
*/
|
|
51
61
|
parentSpaceId?: SpaceId | undefined;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* An IANA time zone name, e.g. "Europe/Stockholm". Accepted only on a building — a
|
|
65
|
+
* top-level space — and refused on any other. Unset leaves it unknown.
|
|
66
|
+
*
|
|
67
|
+
* @generated from field: optional string time_zone = 6;
|
|
68
|
+
*/
|
|
69
|
+
timeZone?: string | undefined;
|
|
52
70
|
};
|
|
53
71
|
|
|
54
72
|
/**
|
|
@@ -58,9 +76,22 @@ export declare type CreateSpace = Message<"kusinta.iot.webrtc.v1.CreateSpace"> &
|
|
|
58
76
|
export declare const CreateSpaceSchema: GenMessage<CreateSpace>;
|
|
59
77
|
|
|
60
78
|
/**
|
|
61
|
-
* Changes a space in place.
|
|
62
|
-
*
|
|
63
|
-
*
|
|
79
|
+
* Changes a space in place. Changes that would take a space into or out of a home, or move
|
|
80
|
+
* a home, are guarded by the gateway; a caller not allowed is refused as NOT_ENTITLED. A
|
|
81
|
+
* change is refused whatever the caller if it would leave anything but a room under an
|
|
82
|
+
* apartment, an apartment in a home, or — among what the caller can see — a device in two
|
|
83
|
+
* homes or a link across a home's boundary. What the caller cannot see never refuses it: a
|
|
84
|
+
* device a resident owns that would leave its owner's home, enter a home not theirs or sit
|
|
85
|
+
* in two homes is taken out of the moving space instead — staying in its owner's home,
|
|
86
|
+
* filed on the apartment, where it was in it — and any link it would carry across a
|
|
87
|
+
* boundary is removed. Changing the type of a space that has members needs
|
|
88
|
+
* ROLE_PROPERTY_OWNER or ROLE_GATEWAY_ADMIN, who see them, and is refused if it would
|
|
89
|
+
* leave a RESIDENT membership on a room — which can tell them of a membership change since
|
|
90
|
+
* the last quarter hour; that much this refusal discloses.
|
|
91
|
+
*
|
|
92
|
+
* Every descriptive field carries explicit presence: absent means leave it alone, present
|
|
93
|
+
* means set it to this — including to the empty string, which is how a description is
|
|
94
|
+
* cleared.
|
|
64
95
|
*
|
|
65
96
|
* @generated from message kusinta.iot.webrtc.v1.UpdateSpace
|
|
66
97
|
*/
|
|
@@ -111,6 +142,15 @@ export declare type UpdateSpace = Message<"kusinta.iot.webrtc.v1.UpdateSpace"> &
|
|
|
111
142
|
value: boolean;
|
|
112
143
|
case: "detach";
|
|
113
144
|
} | { case: undefined; value?: undefined };
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* An IANA time zone name, e.g. "Europe/Stockholm". Accepted only on a building — a
|
|
148
|
+
* top-level space — and refused on any other. Unset leaves it unchanged; the empty
|
|
149
|
+
* string clears it.
|
|
150
|
+
*
|
|
151
|
+
* @generated from field: optional string time_zone = 8;
|
|
152
|
+
*/
|
|
153
|
+
timeZone?: string | undefined;
|
|
114
154
|
};
|
|
115
155
|
|
|
116
156
|
/**
|
|
@@ -122,7 +162,8 @@ export declare const UpdateSpaceSchema: GenMessage<UpdateSpace>;
|
|
|
122
162
|
/**
|
|
123
163
|
* Deletes a space. Refused if the space still holds devices or sub-spaces unless
|
|
124
164
|
* cascade is set, so that emptying a building is always something the caller
|
|
125
|
-
* asked for rather than something a stale client did by accident.
|
|
165
|
+
* asked for rather than something a stale client did by accident. Deleting a home, or
|
|
166
|
+
* anything in one, is guarded as UpdateSpace is.
|
|
126
167
|
*
|
|
127
168
|
* @generated from message kusinta.iot.webrtc.v1.DeleteSpace
|
|
128
169
|
*/
|
|
@@ -145,10 +186,17 @@ export declare type DeleteSpace = Message<"kusinta.iot.webrtc.v1.DeleteSpace"> &
|
|
|
145
186
|
export declare const DeleteSpaceSchema: GenMessage<DeleteSpace>;
|
|
146
187
|
|
|
147
188
|
/**
|
|
148
|
-
* Adds a user to a space, granting them reach of it and everything beneath it
|
|
189
|
+
* Adds a user to a space, granting them reach of it and everything beneath it — except
|
|
190
|
+
* that a RESIDENT membership reaches no home beneath it (see access.v1.MembershipRelation).
|
|
149
191
|
* The user need not be known to the gateway beforehand — identities are minted by
|
|
150
192
|
* the token issuer, and this records that one of them belongs here.
|
|
151
193
|
*
|
|
194
|
+
* Assigning a user who is already a member changes their relation to the space.
|
|
195
|
+
* RESIDENT is refused on a room; see access.v1.MembershipRelation.
|
|
196
|
+
*
|
|
197
|
+
* Who may change who belongs to a home is restricted by the gateway; a caller not allowed is
|
|
198
|
+
* refused as NOT_ENTITLED. Residents see who is filed on their home in Space.members.
|
|
199
|
+
*
|
|
152
200
|
* @generated from message kusinta.iot.webrtc.v1.AssignUserToSpace
|
|
153
201
|
*/
|
|
154
202
|
export declare type AssignUserToSpace = Message<"kusinta.iot.webrtc.v1.AssignUserToSpace"> & {
|
|
@@ -161,6 +209,15 @@ export declare type AssignUserToSpace = Message<"kusinta.iot.webrtc.v1.AssignUse
|
|
|
161
209
|
* @generated from field: kusinta.iot.identity.v1.UserId user_id = 2;
|
|
162
210
|
*/
|
|
163
211
|
userId?: UserId | undefined;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* How the user stands to the space — whether they live there or are there for the
|
|
215
|
+
* building. Required: UNSPECIFIED is refused, never defaulted. See
|
|
216
|
+
* access.v1.MembershipRelation for what each lets a member see of a home.
|
|
217
|
+
*
|
|
218
|
+
* @generated from field: kusinta.iot.access.v1.MembershipRelation relation = 4;
|
|
219
|
+
*/
|
|
220
|
+
relation: MembershipRelation;
|
|
164
221
|
};
|
|
165
222
|
|
|
166
223
|
/**
|
|
@@ -173,6 +230,8 @@ export declare const AssignUserToSpaceSchema: GenMessage<AssignUserToSpace>;
|
|
|
173
230
|
* Removes a user's membership of a space. Losing reach also drops whatever the
|
|
174
231
|
* user was streaming from it, announced by LivePermissionUpdate.
|
|
175
232
|
*
|
|
233
|
+
* Removing someone else from a home is guarded as assigning is.
|
|
234
|
+
*
|
|
176
235
|
* @generated from message kusinta.iot.webrtc.v1.RemoveUserFromSpace
|
|
177
236
|
*/
|
|
178
237
|
export declare type RemoveUserFromSpace = Message<"kusinta.iot.webrtc.v1.RemoveUserFromSpace"> & {
|
|
@@ -197,6 +256,12 @@ export declare const RemoveUserFromSpaceSchema: GenMessage<RemoveUserFromSpace>;
|
|
|
197
256
|
* Files a device into a space. A device may sit in several spaces at once; this
|
|
198
257
|
* is additive, and filing a device where it already sits is a no-op.
|
|
199
258
|
*
|
|
259
|
+
* Into a home go only the building's own devices and devices its residents own, and a
|
|
260
|
+
* device belongs to one home at most; filing into, out of or beside a home is guarded by
|
|
261
|
+
* the gateway. A caller not allowed is refused as NOT_ENTITLED, and filing that would leave
|
|
262
|
+
* a link the caller can see across a home's boundary is refused whatever the caller; one
|
|
263
|
+
* they cannot see is removed instead.
|
|
264
|
+
*
|
|
200
265
|
* @generated from message kusinta.iot.webrtc.v1.PlaceDeviceInSpace
|
|
201
266
|
*/
|
|
202
267
|
export declare type PlaceDeviceInSpace = Message<"kusinta.iot.webrtc.v1.PlaceDeviceInSpace"> & {
|
|
@@ -221,6 +286,9 @@ export declare const PlaceDeviceInSpaceSchema: GenMessage<PlaceDeviceInSpace>;
|
|
|
221
286
|
* Takes a device out of one space, leaving any others intact. A device in no
|
|
222
287
|
* space and with no owner is unfiled, and visible only to the administrator.
|
|
223
288
|
*
|
|
289
|
+
* Taking a device out of a home is guarded as PlaceDeviceInSpace is, and removes its links
|
|
290
|
+
* to devices still in the home.
|
|
291
|
+
*
|
|
224
292
|
* @generated from message kusinta.iot.webrtc.v1.RemoveDeviceFromSpace
|
|
225
293
|
*/
|
|
226
294
|
export declare type RemoveDeviceFromSpace = Message<"kusinta.iot.webrtc.v1.RemoveDeviceFromSpace"> & {
|
|
@@ -244,7 +312,12 @@ export declare const RemoveDeviceFromSpaceSchema: GenMessage<RemoveDeviceFromSpa
|
|
|
244
312
|
/**
|
|
245
313
|
* Takes ownership of a device. Ownership is reach in its own right: an owner may
|
|
246
314
|
* see and control their device whatever their gateway-wide role permits, and may
|
|
247
|
-
* file it into spaces they belong to
|
|
315
|
+
* file it into spaces they belong to, and the rooms of a home they live in — though into a
|
|
316
|
+
* home only if they live there (see PlaceDeviceInSpace).
|
|
317
|
+
*
|
|
318
|
+
* Only a RESIDENT claim makes the caller the owner. A COMPANY claim records that the
|
|
319
|
+
* building owns the device, names no person, and grants the caller no reach. Claims of a
|
|
320
|
+
* device in a home, or of one already claimed, are restricted by the gateway.
|
|
248
321
|
*
|
|
249
322
|
* @generated from message kusinta.iot.webrtc.v1.ClaimDevice
|
|
250
323
|
*/
|
|
@@ -265,8 +338,18 @@ export declare type ClaimDevice = Message<"kusinta.iot.webrtc.v1.ClaimDevice"> &
|
|
|
265
338
|
initialSpaceId?: SpaceId | undefined;
|
|
266
339
|
|
|
267
340
|
/**
|
|
268
|
-
* Evidence the claimant is standing at the device: the
|
|
269
|
-
* matched against DeviceDescriptor.serial_number.
|
|
341
|
+
* Evidence the claimant is standing at the device: the identifier printed on it,
|
|
342
|
+
* matched against DeviceDescriptor.serial_number.
|
|
343
|
+
*
|
|
344
|
+
* The match is by SUFFIX, because what a connector announces is not always the whole
|
|
345
|
+
* of what is printed and the announced value is commonly the tail of the printed one.
|
|
346
|
+
* Both sides are normalised first — lowercased, with whitespace and ASCII hyphens
|
|
347
|
+
* removed, since a label prints the value in groups and a scan does not — and the proof
|
|
348
|
+
* is accepted when what remains ends with the announced serial. Spelled out because two
|
|
349
|
+
* gateways normalising differently would accept different proofs for the same device.
|
|
350
|
+
*
|
|
351
|
+
* A serial shorter than eight characters cannot be proved at all: under a suffix rule a
|
|
352
|
+
* short one is proved by almost anything ending with it. Required precisely when the
|
|
270
353
|
* caller cannot already reach the device, which is the ordinary case for a
|
|
271
354
|
* resident claiming something they just bought — an unfiled device is invisible
|
|
272
355
|
* to them, so possession is the only thing left that can distinguish them from
|
|
@@ -286,8 +369,9 @@ export declare type ClaimDevice = Message<"kusinta.iot.webrtc.v1.ClaimDevice"> &
|
|
|
286
369
|
export declare const ClaimDeviceSchema: GenMessage<ClaimDevice>;
|
|
287
370
|
|
|
288
371
|
/**
|
|
289
|
-
* Gives up ownership. The device keeps whatever space filing it has
|
|
290
|
-
*
|
|
372
|
+
* Gives up ownership. The device keeps whatever space filing it has, except that a device in
|
|
373
|
+
* a home stays filed in the home alone, as one of the building's own devices there — as
|
|
374
|
+
* when its owner moves out; if it has none it becomes unfiled.
|
|
291
375
|
*
|
|
292
376
|
* @generated from message kusinta.iot.webrtc.v1.ReleaseDevice
|
|
293
377
|
*/
|
|
@@ -304,6 +388,66 @@ export declare type ReleaseDevice = Message<"kusinta.iot.webrtc.v1.ReleaseDevice
|
|
|
304
388
|
*/
|
|
305
389
|
export declare const ReleaseDeviceSchema: GenMessage<ReleaseDevice>;
|
|
306
390
|
|
|
391
|
+
/**
|
|
392
|
+
* Registers a device with the system that will admit it, so that it can join
|
|
393
|
+
* later. For a technology where a device is enrolled as a record rather than
|
|
394
|
+
* adopted during a window — see common.v1.PairingWindow for the other case, where
|
|
395
|
+
* something joins a hub during a window and the arrival is attributed to the
|
|
396
|
+
* caller. A LoRaWAN device has no window: it is written into a network server and
|
|
397
|
+
* joins whenever it is next powered, which may be minutes, days, or never.
|
|
398
|
+
*
|
|
399
|
+
* Answered with the ordinary ManagementAck. A provision writes a record and returns
|
|
400
|
+
* nothing to show; the device itself is announced by device_added if and when it
|
|
401
|
+
* joins, the same path every other device takes — which is why this adds no
|
|
402
|
+
* ManagementResult arm. A new result arm is a compile error in a consumer that
|
|
403
|
+
* matches the result exhaustively; a new request arm is not.
|
|
404
|
+
*
|
|
405
|
+
* Registering and owning stay two operations. ClaimDevice records the caller and
|
|
406
|
+
* carries possession_proof, so a device that has not joined yet is still claimable
|
|
407
|
+
* by whoever holds it — and because the connector derives the device id and the
|
|
408
|
+
* serial from the identifier here, that claim can be made before the join.
|
|
409
|
+
*
|
|
410
|
+
* Provisioning the same identifier twice is an upsert: it replaces the credentials
|
|
411
|
+
* rather than being refused as a conflict, so correcting a mistyped key does not
|
|
412
|
+
* require removing the device first. Removing a record is a distinct act from
|
|
413
|
+
* giving up ownership (ReleaseDevice) and is left to a later operation.
|
|
414
|
+
*
|
|
415
|
+
* @generated from message kusinta.iot.webrtc.v1.ProvisionDevice
|
|
416
|
+
*/
|
|
417
|
+
export declare type ProvisionDevice = Message<"kusinta.iot.webrtc.v1.ProvisionDevice"> & {
|
|
418
|
+
/**
|
|
419
|
+
* Required, unlike a pairing window's connector target. A registration is written
|
|
420
|
+
* to one specific registry; there is no sensible "open them all and see what
|
|
421
|
+
* joins". The app names it from the connector enumeration, targeting a connector
|
|
422
|
+
* that declares ConnectorInfo.supports_provisioning.
|
|
423
|
+
*
|
|
424
|
+
* @generated from field: kusinta.iot.identity.v1.ConnectorId connector_id = 1;
|
|
425
|
+
*/
|
|
426
|
+
connectorId?: ConnectorId | undefined;
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* What the registry needs to admit the device, which differs entirely by
|
|
430
|
+
* technology — a oneof per technology rather than a flat set of fields, for the
|
|
431
|
+
* reason LinkSettings gives: the second technology to arrive must not turn this
|
|
432
|
+
* into a bag of unrelated optionals named after the first.
|
|
433
|
+
*
|
|
434
|
+
* @generated from oneof kusinta.iot.webrtc.v1.ProvisionDevice.credentials
|
|
435
|
+
*/
|
|
436
|
+
credentials: {
|
|
437
|
+
/**
|
|
438
|
+
* @generated from field: kusinta.iot.vendor.lorawan.v1.LorawanProvisioning lorawan = 2;
|
|
439
|
+
*/
|
|
440
|
+
value: LorawanProvisioning;
|
|
441
|
+
case: "lorawan";
|
|
442
|
+
} | { case: undefined; value?: undefined };
|
|
443
|
+
};
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* Describes the message kusinta.iot.webrtc.v1.ProvisionDevice.
|
|
447
|
+
* Use `create(ProvisionDeviceSchema)` to create a new message.
|
|
448
|
+
*/
|
|
449
|
+
export declare const ProvisionDeviceSchema: GenMessage<ProvisionDevice>;
|
|
450
|
+
|
|
307
451
|
/**
|
|
308
452
|
* Asks for the spaces the caller can reach. Unset root_space_id means all of
|
|
309
453
|
* them, which for most users is one apartment and for an administrator is the
|
|
@@ -333,7 +477,9 @@ export declare const ListSpacesSchema: GenMessage<ListSpaces>;
|
|
|
333
477
|
*
|
|
334
478
|
* device_ids on each Space are filtered to what the caller may see. An
|
|
335
479
|
* unfiltered tree would list every device on the gateway by id, which is the
|
|
336
|
-
* enumeration channel the snapshot filter exists to close.
|
|
480
|
+
* enumeration channel the snapshot filter exists to close. To a caller who sees a home as
|
|
481
|
+
* service, what is new in it is listed from the next quarter hour and what is gone at once
|
|
482
|
+
* — except its members, which change only at quarter hours (see Space.members).
|
|
337
483
|
*
|
|
338
484
|
* @generated from message kusinta.iot.webrtc.v1.SpaceTree
|
|
339
485
|
*/
|
|
@@ -373,7 +519,552 @@ export declare const ManagementAckSchema: GenMessage<ManagementAck>;
|
|
|
373
519
|
* message kind, so these can never be gated by a table keyed on the envelope case
|
|
374
520
|
* the way device messages are. Keeping them behind one case means one place that
|
|
375
521
|
* must authorize, and one refusal path that must not leak whether a target exists.
|
|
522
|
+
* Links one device to another, so the sender leads the receiver. The gateway
|
|
523
|
+
* resolves which underlying connections that needs and asks the connector for
|
|
524
|
+
* them; a caller names two devices and what the link is for.
|
|
525
|
+
*
|
|
526
|
+
* Authorized against both ends, and not symmetrically. Leading a device is a
|
|
527
|
+
* standing grant of control over it, so the receiver requires ownership or a
|
|
528
|
+
* servicing role. The sender's requirement depends on the mode: a gateway-kept
|
|
529
|
+
* link only reads what the caller can already see, while a device-to-device one
|
|
530
|
+
* writes configuration to the sender and spends its battery, which is a change
|
|
531
|
+
* to someone else's hardware.
|
|
532
|
+
*
|
|
533
|
+
* In a home it is the other way round: links between its devices are its residents' to
|
|
534
|
+
* make, change and remove, and a caller who reaches it as service is refused as
|
|
535
|
+
* NOT_ENTITLED. A link between a device in a home and one outside it is refused to anyone.
|
|
536
|
+
* The same holds for UpdateDeviceLink and RemoveDeviceLink.
|
|
537
|
+
*
|
|
538
|
+
* @generated from message kusinta.iot.webrtc.v1.CreateDeviceLink
|
|
539
|
+
*/
|
|
540
|
+
export declare type CreateDeviceLink = Message<"kusinta.iot.webrtc.v1.CreateDeviceLink"> & {
|
|
541
|
+
/**
|
|
542
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId sender = 1;
|
|
543
|
+
*/
|
|
544
|
+
sender?: DeviceId | undefined;
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId receiver = 2;
|
|
548
|
+
*/
|
|
549
|
+
receiver?: DeviceId | undefined;
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* @generated from field: kusinta.iot.link.v1.LinkFunction function = 3;
|
|
553
|
+
*/
|
|
554
|
+
function: LinkFunction;
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* Unset lets the gateway choose, which prefers a device-to-device link where
|
|
558
|
+
* one can be brokered: it survives a gateway outage and runs at the devices'
|
|
559
|
+
* own rate. Name one to override that.
|
|
560
|
+
*
|
|
561
|
+
* @generated from field: kusinta.iot.link.v1.LinkMode mode = 4;
|
|
562
|
+
*/
|
|
563
|
+
mode: LinkMode;
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* How a gateway-kept link is to behave, set as it is made. Carried here as
|
|
567
|
+
* well as on UpdateDeviceLink so that a link does not have to exist in a
|
|
568
|
+
* configured-by-nobody state first — a soft climate link created without a
|
|
569
|
+
* target is one that holds the room at nothing until a second request
|
|
570
|
+
* arrives, and every reader would have to handle that transient forever.
|
|
571
|
+
*
|
|
572
|
+
* Unset is still allowed and still means unconfigured, since a hard link has
|
|
573
|
+
* nothing to configure and a caller may genuinely not know the target yet.
|
|
574
|
+
*
|
|
575
|
+
* @generated from field: kusinta.iot.link.v1.LinkSettings settings = 5;
|
|
576
|
+
*/
|
|
577
|
+
settings?: LinkSettings | undefined;
|
|
578
|
+
};
|
|
579
|
+
|
|
580
|
+
/**
|
|
581
|
+
* Describes the message kusinta.iot.webrtc.v1.CreateDeviceLink.
|
|
582
|
+
* Use `create(CreateDeviceLinkSchema)` to create a new message.
|
|
583
|
+
*/
|
|
584
|
+
export declare const CreateDeviceLinkSchema: GenMessage<CreateDeviceLink>;
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Removes a link. Note that on at least one vendor, removing a link disturbs the
|
|
588
|
+
* receiver's own settings and the connector must repair them, so this is not the
|
|
589
|
+
* no-op it appears to be.
|
|
376
590
|
*
|
|
591
|
+
* @generated from message kusinta.iot.webrtc.v1.RemoveDeviceLink
|
|
592
|
+
*/
|
|
593
|
+
export declare type RemoveDeviceLink = Message<"kusinta.iot.webrtc.v1.RemoveDeviceLink"> & {
|
|
594
|
+
/**
|
|
595
|
+
* @generated from field: string link_id = 1;
|
|
596
|
+
*/
|
|
597
|
+
linkId: string;
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* Describes the message kusinta.iot.webrtc.v1.RemoveDeviceLink.
|
|
602
|
+
* Use `create(RemoveDeviceLinkSchema)` to create a new message.
|
|
603
|
+
*/
|
|
604
|
+
export declare const RemoveDeviceLinkSchema: GenMessage<RemoveDeviceLink>;
|
|
605
|
+
|
|
606
|
+
/**
|
|
607
|
+
* Changes how a gateway-kept link behaves — for a climate lead, the temperature
|
|
608
|
+
* it is to hold.
|
|
609
|
+
*
|
|
610
|
+
* Refused on a link that has nothing to configure — see LinkSettings — rather
|
|
611
|
+
* than accepted as a no-op, so that a caller who has mistaken which link they
|
|
612
|
+
* are holding is told.
|
|
613
|
+
*
|
|
614
|
+
* Authorized against both ends, as creating and removing the link are: deciding
|
|
615
|
+
* what temperature a room is held at is directing a device, not adjusting one,
|
|
616
|
+
* so it takes ownership of the ends or a servicing role, not the permission to
|
|
617
|
+
* turn a thermostat up. In a home it is its residents' instead (see CreateDeviceLink).
|
|
618
|
+
*
|
|
619
|
+
* @generated from message kusinta.iot.webrtc.v1.UpdateDeviceLink
|
|
620
|
+
*/
|
|
621
|
+
export declare type UpdateDeviceLink = Message<"kusinta.iot.webrtc.v1.UpdateDeviceLink"> & {
|
|
622
|
+
/**
|
|
623
|
+
* @generated from field: string link_id = 1;
|
|
624
|
+
*/
|
|
625
|
+
linkId: string;
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Replaces the link's settings rather than patching them: the settings of one
|
|
629
|
+
* function are few and are set together, so there is no half-update worth
|
|
630
|
+
* expressing. This is why it does not follow UpdateSpace's per-field optional
|
|
631
|
+
* shape, which exists for a message whose fields genuinely move alone.
|
|
632
|
+
*
|
|
633
|
+
* Unset is refused rather than being given a meaning. It would have to mean
|
|
634
|
+
* either "leave everything alone", making the request a no-op, or "clear the
|
|
635
|
+
* settings", which is the one thing that reads like an accident — and the
|
|
636
|
+
* wire cannot tell those two callers apart.
|
|
637
|
+
*
|
|
638
|
+
* @generated from field: kusinta.iot.link.v1.LinkSettings settings = 2;
|
|
639
|
+
*/
|
|
640
|
+
settings?: LinkSettings | undefined;
|
|
641
|
+
};
|
|
642
|
+
|
|
643
|
+
/**
|
|
644
|
+
* Describes the message kusinta.iot.webrtc.v1.UpdateDeviceLink.
|
|
645
|
+
* Use `create(UpdateDeviceLinkSchema)` to create a new message.
|
|
646
|
+
*/
|
|
647
|
+
export declare const UpdateDeviceLinkSchema: GenMessage<UpdateDeviceLink>;
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* Lists links. Unset device_id lists every link among devices the caller can
|
|
651
|
+
* reach; naming one narrows it to that device's own, in either direction.
|
|
652
|
+
*
|
|
653
|
+
* A link with an end in a home reaches a caller who sees it as service with
|
|
654
|
+
* DeviceLink.details_withheld set, and what that withholds unset — a new link
|
|
655
|
+
* from the next quarter hour, a removed one at once — and not at all when either end is a
|
|
656
|
+
* device a resident owns.
|
|
657
|
+
*
|
|
658
|
+
* @generated from message kusinta.iot.webrtc.v1.ListDeviceLinks
|
|
659
|
+
*/
|
|
660
|
+
export declare type ListDeviceLinks = Message<"kusinta.iot.webrtc.v1.ListDeviceLinks"> & {
|
|
661
|
+
/**
|
|
662
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
|
|
663
|
+
*/
|
|
664
|
+
deviceId?: DeviceId | undefined;
|
|
665
|
+
};
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Describes the message kusinta.iot.webrtc.v1.ListDeviceLinks.
|
|
669
|
+
* Use `create(ListDeviceLinksSchema)` to create a new message.
|
|
670
|
+
*/
|
|
671
|
+
export declare const ListDeviceLinksSchema: GenMessage<ListDeviceLinks>;
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* Sets the temperature a room is to be held at.
|
|
675
|
+
*
|
|
676
|
+
* Authorized as adjusting, not directing: WRITE on the room is enough. It is the same act
|
|
677
|
+
* as turning a radiator's knob; setting up what the room obeys is ConfigureRoomClimate,
|
|
678
|
+
* and stays with owners, except the lock in a home.
|
|
679
|
+
*
|
|
680
|
+
* In a home, only its residents may set it; a caller who reaches the room as service is
|
|
681
|
+
* refused as NOT_ENTITLED.
|
|
682
|
+
*
|
|
683
|
+
* Clamped to the room's limits rather than refused outside them, and the clamped value is
|
|
684
|
+
* what the room's RoomClimate then reports.
|
|
685
|
+
*
|
|
686
|
+
* @generated from message kusinta.iot.webrtc.v1.SetRoomTarget
|
|
687
|
+
*/
|
|
688
|
+
export declare type SetRoomTarget = Message<"kusinta.iot.webrtc.v1.SetRoomTarget"> & {
|
|
689
|
+
/**
|
|
690
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId room_id = 1;
|
|
691
|
+
*/
|
|
692
|
+
roomId?: SpaceId | undefined;
|
|
693
|
+
|
|
694
|
+
/**
|
|
695
|
+
* Unset clears the target: the room goes back to having none (NO_TARGET) and its
|
|
696
|
+
* devices to their own behaviour. With presence, so that a request that forgot the
|
|
697
|
+
* field is not read as 0 °C and clamped to the room's minimum.
|
|
698
|
+
*
|
|
699
|
+
* @generated from field: optional sint32 target_centidegrees = 2;
|
|
700
|
+
*/
|
|
701
|
+
targetCentidegrees?: number | undefined;
|
|
702
|
+
};
|
|
703
|
+
|
|
704
|
+
/**
|
|
705
|
+
* Describes the message kusinta.iot.webrtc.v1.SetRoomTarget.
|
|
706
|
+
* Use `create(SetRoomTargetSchema)` to create a new message.
|
|
707
|
+
*/
|
|
708
|
+
export declare const SetRoomTargetSchema: GenMessage<SetRoomTarget>;
|
|
709
|
+
|
|
710
|
+
/**
|
|
711
|
+
* The sensors a room measures with, in order of preference. A message of its own so that
|
|
712
|
+
* "leave the sensors alone" (unset) differs from "set" on the wire. It orders the
|
|
713
|
+
* building's sensors only (see climate.v1.RoomClimate.sensor_ids); set but empty returns
|
|
714
|
+
* them to the default, every building temperature sensor filed in the room in filing
|
|
715
|
+
* order.
|
|
716
|
+
*
|
|
717
|
+
* @generated from message kusinta.iot.webrtc.v1.RoomSensors
|
|
718
|
+
*/
|
|
719
|
+
export declare type RoomSensors = Message<"kusinta.iot.webrtc.v1.RoomSensors"> & {
|
|
720
|
+
/**
|
|
721
|
+
* @generated from field: repeated kusinta.iot.identity.v1.DeviceId sensor_ids = 1;
|
|
722
|
+
*/
|
|
723
|
+
sensorIds: DeviceId[];
|
|
724
|
+
};
|
|
725
|
+
|
|
726
|
+
/**
|
|
727
|
+
* Describes the message kusinta.iot.webrtc.v1.RoomSensors.
|
|
728
|
+
* Use `create(RoomSensorsSchema)` to create a new message.
|
|
729
|
+
*/
|
|
730
|
+
export declare const RoomSensorsSchema: GenMessage<RoomSensors>;
|
|
731
|
+
|
|
732
|
+
/**
|
|
733
|
+
* A room's limits. A message of its own so that "leave the limits alone" (unset) differs
|
|
734
|
+
* from "set" — and, set, an unset bound inside it removes that bound, which a bare
|
|
735
|
+
* optional on the request could not say.
|
|
736
|
+
*
|
|
737
|
+
* @generated from message kusinta.iot.webrtc.v1.RoomLimits
|
|
738
|
+
*/
|
|
739
|
+
export declare type RoomLimits = Message<"kusinta.iot.webrtc.v1.RoomLimits"> & {
|
|
740
|
+
/**
|
|
741
|
+
* @generated from field: optional sint32 min_centidegrees = 1;
|
|
742
|
+
*/
|
|
743
|
+
minCentidegrees?: number | undefined;
|
|
744
|
+
|
|
745
|
+
/**
|
|
746
|
+
* @generated from field: optional sint32 max_centidegrees = 2;
|
|
747
|
+
*/
|
|
748
|
+
maxCentidegrees?: number | undefined;
|
|
749
|
+
};
|
|
750
|
+
|
|
751
|
+
/**
|
|
752
|
+
* Describes the message kusinta.iot.webrtc.v1.RoomLimits.
|
|
753
|
+
* Use `create(RoomLimitsSchema)` to create a new message.
|
|
754
|
+
*/
|
|
755
|
+
export declare const RoomLimitsSchema: GenMessage<RoomLimits>;
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* Configures what a room obeys: its limits, its sensors, and whether a change made by
|
|
759
|
+
* hand at one of its devices counts. Authorized as directing — owners and filing roles —
|
|
760
|
+
* because this decides what everybody in the room can do.
|
|
761
|
+
*
|
|
762
|
+
* One exception: in a home, lock_device_controls is its residents' alone. They may send
|
|
763
|
+
* this request with nothing else set. Outside homes the lock is the owner's, as the rest
|
|
764
|
+
* is. A request that sets anything its caller may not — the lock in a home for service;
|
|
765
|
+
* anything but the lock in a home, or the lock outside one, for a caller with neither
|
|
766
|
+
* ROLE_PROPERTY_OWNER nor a filing role — is refused whole as NOT_ENTITLED, so nothing of
|
|
767
|
+
* it applies. sensors orders only the building's own
|
|
768
|
+
* sensors (see RoomClimate.sensor_ids).
|
|
769
|
+
*
|
|
770
|
+
* Each field moves alone, as on UpdateSpace: unset leaves it as it is.
|
|
771
|
+
*
|
|
772
|
+
* @generated from message kusinta.iot.webrtc.v1.ConfigureRoomClimate
|
|
773
|
+
*/
|
|
774
|
+
export declare type ConfigureRoomClimate = Message<"kusinta.iot.webrtc.v1.ConfigureRoomClimate"> & {
|
|
775
|
+
/**
|
|
776
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId room_id = 1;
|
|
777
|
+
*/
|
|
778
|
+
roomId?: SpaceId | undefined;
|
|
779
|
+
|
|
780
|
+
/**
|
|
781
|
+
* Replaces both bounds; see RoomLimits.
|
|
782
|
+
*
|
|
783
|
+
* @generated from field: kusinta.iot.webrtc.v1.RoomLimits limits = 2;
|
|
784
|
+
*/
|
|
785
|
+
limits?: RoomLimits | undefined;
|
|
786
|
+
|
|
787
|
+
/**
|
|
788
|
+
* Only the building's sensors filed in this room; any other — including a sensor a
|
|
789
|
+
* resident owns — is refused, the same way whether or not it exists.
|
|
790
|
+
*
|
|
791
|
+
* @generated from field: kusinta.iot.webrtc.v1.RoomSensors sensors = 3;
|
|
792
|
+
*/
|
|
793
|
+
sensors?: RoomSensors | undefined;
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* @generated from field: optional bool lock_device_controls = 4;
|
|
797
|
+
*/
|
|
798
|
+
lockDeviceControls?: boolean | undefined;
|
|
799
|
+
};
|
|
800
|
+
|
|
801
|
+
/**
|
|
802
|
+
* Describes the message kusinta.iot.webrtc.v1.ConfigureRoomClimate.
|
|
803
|
+
* Use `create(ConfigureRoomClimateSchema)` to create a new message.
|
|
804
|
+
*/
|
|
805
|
+
export declare const ConfigureRoomClimateSchema: GenMessage<ConfigureRoomClimate>;
|
|
806
|
+
|
|
807
|
+
/**
|
|
808
|
+
* Switches a mode on a space on, or off with kind UNSPECIFIED. WRITE on the space.
|
|
809
|
+
* Switching one on needs setback_centidegrees; a mode with nothing to set back to is
|
|
810
|
+
* refused. Switching one on is refused on a room inside an apartment, whose rooms follow
|
|
811
|
+
* the apartment's mode alone; such a room carries none (see climate.v1.ClimateMode), and
|
|
812
|
+
* switching one off there is accepted and does nothing — for those who may switch modes in
|
|
813
|
+
* that home at all, which is checked first: anyone else is refused as NOT_ENTITLED.
|
|
814
|
+
*
|
|
815
|
+
* In a home, only its residents may switch one on or off: whether a home stands empty is
|
|
816
|
+
* theirs to say. A caller who reaches it as service is refused as NOT_ENTITLED — except
|
|
817
|
+
* that, while the home had no resident at the last quarter hour, ROLE_PROPERTY_OWNER or
|
|
818
|
+
* ROLE_GATEWAY_ADMIN may switch off a mode that was on then and whose setter is not a
|
|
819
|
+
* resident now, so that no mode outlives everyone who could end it. Any other switch-off
|
|
820
|
+
* from them — no mode on, or one that is a resident's — is accepted and does nothing, so
|
|
821
|
+
* the answer tells them nothing of whether a mode was on or whether anyone has moved in.
|
|
822
|
+
*
|
|
823
|
+
* @generated from message kusinta.iot.webrtc.v1.SetClimateMode
|
|
824
|
+
*/
|
|
825
|
+
export declare type SetClimateMode = Message<"kusinta.iot.webrtc.v1.SetClimateMode"> & {
|
|
826
|
+
/**
|
|
827
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
|
|
828
|
+
*/
|
|
829
|
+
spaceId?: SpaceId | undefined;
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateModeKind kind = 2;
|
|
833
|
+
*/
|
|
834
|
+
kind: ClimateModeKind;
|
|
835
|
+
|
|
836
|
+
/**
|
|
837
|
+
* @generated from field: optional sint32 setback_centidegrees = 3;
|
|
838
|
+
*/
|
|
839
|
+
setbackCentidegrees?: number | undefined;
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* HOLIDAY only; both required there. Refused on AWAY.
|
|
843
|
+
*
|
|
844
|
+
* @generated from field: google.protobuf.Timestamp starts_at = 4;
|
|
845
|
+
*/
|
|
846
|
+
startsAt?: Timestamp | undefined;
|
|
847
|
+
|
|
848
|
+
/**
|
|
849
|
+
* @generated from field: google.protobuf.Timestamp ends_at = 5;
|
|
850
|
+
*/
|
|
851
|
+
endsAt?: Timestamp | undefined;
|
|
852
|
+
};
|
|
853
|
+
|
|
854
|
+
/**
|
|
855
|
+
* Describes the message kusinta.iot.webrtc.v1.SetClimateMode.
|
|
856
|
+
* Use `create(SetClimateModeSchema)` to create a new message.
|
|
857
|
+
*/
|
|
858
|
+
export declare const SetClimateModeSchema: GenMessage<SetClimateMode>;
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Lists the room climates and modes a caller may see. Unset root_space_id lists every
|
|
862
|
+
* one the caller can reach; naming a space narrows it to that space and those below.
|
|
863
|
+
*
|
|
864
|
+
* A caller who reaches a room inside an apartment as service gets it with
|
|
865
|
+
* RoomClimate.state_withheld set — what is new from the next quarter hour, what is gone at
|
|
866
|
+
* once — and gets no ClimateMode set on that apartment or its rooms.
|
|
867
|
+
*
|
|
868
|
+
* @generated from message kusinta.iot.webrtc.v1.ListRoomClimates
|
|
869
|
+
*/
|
|
870
|
+
export declare type ListRoomClimates = Message<"kusinta.iot.webrtc.v1.ListRoomClimates"> & {
|
|
871
|
+
/**
|
|
872
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId root_space_id = 1;
|
|
873
|
+
*/
|
|
874
|
+
rootSpaceId?: SpaceId | undefined;
|
|
875
|
+
};
|
|
876
|
+
|
|
877
|
+
/**
|
|
878
|
+
* Describes the message kusinta.iot.webrtc.v1.ListRoomClimates.
|
|
879
|
+
* Use `create(ListRoomClimatesSchema)` to create a new message.
|
|
880
|
+
*/
|
|
881
|
+
export declare const ListRoomClimatesSchema: GenMessage<ListRoomClimates>;
|
|
882
|
+
|
|
883
|
+
/**
|
|
884
|
+
* Reads a room's history, answered with a climate.v1.RoomHistory of fixed 15-minute
|
|
885
|
+
* buckets aligned to UTC quarter hours (:00, :15, :30, :45). Needs READ on the room.
|
|
886
|
+
*
|
|
887
|
+
* The range is half-open: a bucket is returned when from_time <= at < to_time, so
|
|
888
|
+
* back-to-back windows neither repeat nor skip a bucket. Unset to_time means now;
|
|
889
|
+
* unset from_time means RoomHistory.kept_from. Both are clamped to [kept_from, now].
|
|
890
|
+
*
|
|
891
|
+
* A room in a home is readable by its residents only, and only from the start of their
|
|
892
|
+
* current residency (see access.v1.MembershipRelation). A caller who reaches it as service is
|
|
893
|
+
* refused as NOT_ENTITLED; one who reaches the apartment itself has
|
|
894
|
+
* GetApartmentClimateSummary instead.
|
|
895
|
+
*
|
|
896
|
+
* @generated from message kusinta.iot.webrtc.v1.GetRoomHistory
|
|
897
|
+
*/
|
|
898
|
+
export declare type GetRoomHistory = Message<"kusinta.iot.webrtc.v1.GetRoomHistory"> & {
|
|
899
|
+
/**
|
|
900
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId room_id = 1;
|
|
901
|
+
*/
|
|
902
|
+
roomId?: SpaceId | undefined;
|
|
903
|
+
|
|
904
|
+
/**
|
|
905
|
+
* @generated from field: google.protobuf.Timestamp from_time = 2;
|
|
906
|
+
*/
|
|
907
|
+
fromTime?: Timestamp | undefined;
|
|
908
|
+
|
|
909
|
+
/**
|
|
910
|
+
* @generated from field: google.protobuf.Timestamp to_time = 3;
|
|
911
|
+
*/
|
|
912
|
+
toTime?: Timestamp | undefined;
|
|
913
|
+
};
|
|
914
|
+
|
|
915
|
+
/**
|
|
916
|
+
* Describes the message kusinta.iot.webrtc.v1.GetRoomHistory.
|
|
917
|
+
* Use `create(GetRoomHistorySchema)` to create a new message.
|
|
918
|
+
*/
|
|
919
|
+
export declare const GetRoomHistorySchema: GenMessage<GetRoomHistory>;
|
|
920
|
+
|
|
921
|
+
/**
|
|
922
|
+
* What the parties who do not live in a private space learn of it — the answer to a
|
|
923
|
+
* resident asking who can see what in their home, in reply to GetPrivacyDisclosure.
|
|
924
|
+
*
|
|
925
|
+
* It states the policy and the kinds of party it applies to now. It NAMES NOBODY: a resident
|
|
926
|
+
* learns that a technician can see the battery of their radiator valve, not which
|
|
927
|
+
* technician. Those filed on the home itself are named to its residents in Space.members;
|
|
928
|
+
* service reach from a building or floor above is not.
|
|
929
|
+
*
|
|
930
|
+
* @generated from message kusinta.iot.webrtc.v1.PrivacyDisclosure
|
|
931
|
+
*/
|
|
932
|
+
export declare type PrivacyDisclosure = Message<"kusinta.iot.webrtc.v1.PrivacyDisclosure"> & {
|
|
933
|
+
/**
|
|
934
|
+
* An apartment, or a room in one.
|
|
935
|
+
*
|
|
936
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
|
|
937
|
+
*/
|
|
938
|
+
spaceId?: SpaceId | undefined;
|
|
939
|
+
|
|
940
|
+
/**
|
|
941
|
+
* The kinds of party who see this space, or any part of it, as service now — or would
|
|
942
|
+
* through another membership, were they not its residents — each role once, with what
|
|
943
|
+
* that role brings here. Each party is listed under every role it holds other than
|
|
944
|
+
* ROLE_RESIDENT, and sees what its entries say together; one with no other role, or whose
|
|
945
|
+
* role the gateway has not yet learnt, counts as ROLE_UNSPECIFIED. The gateway's
|
|
946
|
+
* administrator is always listed. So the list reads the same whether or not anyone lives
|
|
947
|
+
* in the home, and never understates who has reach or what they see. Devices a resident
|
|
948
|
+
* owns are not shown to service at all. To a caller who sees the space as service, it is
|
|
949
|
+
* answered as it stood at the last quarter hour.
|
|
950
|
+
*
|
|
951
|
+
* @generated from field: repeated kusinta.iot.webrtc.v1.ServiceParty service_parties = 5;
|
|
952
|
+
*/
|
|
953
|
+
serviceParties: ServiceParty[];
|
|
954
|
+
|
|
955
|
+
/**
|
|
956
|
+
* How finely the space's climate is summarised for service, as means over periods of
|
|
957
|
+
* this length (climate.v1.ApartmentClimateSummary). UNSPECIFIED: no summary is given.
|
|
958
|
+
* The gateway's own setting, WEEK unless it is configured otherwise; no operation in this
|
|
959
|
+
* contract changes it. A change applies to periods that open after it: service is given
|
|
960
|
+
* no period that opened before the last change.
|
|
961
|
+
*
|
|
962
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateSummaryPeriod climate_summary_period = 4;
|
|
963
|
+
*/
|
|
964
|
+
climateSummaryPeriod: ClimateSummaryPeriod;
|
|
965
|
+
};
|
|
966
|
+
|
|
967
|
+
/**
|
|
968
|
+
* Describes the message kusinta.iot.webrtc.v1.PrivacyDisclosure.
|
|
969
|
+
* Use `create(PrivacyDisclosureSchema)` to create a new message.
|
|
970
|
+
*/
|
|
971
|
+
export declare const PrivacyDisclosureSchema: GenMessage<PrivacyDisclosure>;
|
|
972
|
+
|
|
973
|
+
/**
|
|
974
|
+
* One kind of party with service reach of a home, and what it sees there. Every service
|
|
975
|
+
* party sees the same kinds of thing of the part of the home it reaches — a whole
|
|
976
|
+
* ServiceStatus, nothing withheld from it — so signals differ between parties only in
|
|
977
|
+
* RESIDENTS. How much of the home that part is, a room or all of it, the disclosure does
|
|
978
|
+
* not say.
|
|
979
|
+
*
|
|
980
|
+
* @generated from message kusinta.iot.webrtc.v1.ServiceParty
|
|
981
|
+
*/
|
|
982
|
+
export declare type ServiceParty = Message<"kusinta.iot.webrtc.v1.ServiceParty"> & {
|
|
983
|
+
/**
|
|
984
|
+
* @generated from field: kusinta.iot.access.v1.Role role = 1;
|
|
985
|
+
*/
|
|
986
|
+
role: Role;
|
|
987
|
+
|
|
988
|
+
/**
|
|
989
|
+
* @generated from field: repeated kusinta.iot.access.v1.ServiceSignal signals = 2;
|
|
990
|
+
*/
|
|
991
|
+
signals: ServiceSignal[];
|
|
992
|
+
};
|
|
993
|
+
|
|
994
|
+
/**
|
|
995
|
+
* Describes the message kusinta.iot.webrtc.v1.ServiceParty.
|
|
996
|
+
* Use `create(ServicePartySchema)` to create a new message.
|
|
997
|
+
*/
|
|
998
|
+
export declare const ServicePartySchema: GenMessage<ServiceParty>;
|
|
999
|
+
|
|
1000
|
+
/**
|
|
1001
|
+
* Asks what the parties who do not live in a space learn of it, answered with a
|
|
1002
|
+
* PrivacyDisclosure. For an apartment or a room in one, and refused on any other
|
|
1003
|
+
* space. Needs READ on the space.
|
|
1004
|
+
*
|
|
1005
|
+
* @generated from message kusinta.iot.webrtc.v1.GetPrivacyDisclosure
|
|
1006
|
+
*/
|
|
1007
|
+
export declare type GetPrivacyDisclosure = Message<"kusinta.iot.webrtc.v1.GetPrivacyDisclosure"> & {
|
|
1008
|
+
/**
|
|
1009
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
|
|
1010
|
+
*/
|
|
1011
|
+
spaceId?: SpaceId | undefined;
|
|
1012
|
+
};
|
|
1013
|
+
|
|
1014
|
+
/**
|
|
1015
|
+
* Describes the message kusinta.iot.webrtc.v1.GetPrivacyDisclosure.
|
|
1016
|
+
* Use `create(GetPrivacyDisclosureSchema)` to create a new message.
|
|
1017
|
+
*/
|
|
1018
|
+
export declare const GetPrivacyDisclosureSchema: GenMessage<GetPrivacyDisclosure>;
|
|
1019
|
+
|
|
1020
|
+
/**
|
|
1021
|
+
* Reads an apartment's climate as means over whole periods, answered with a
|
|
1022
|
+
* climate.v1.ApartmentClimateSummary. Needs READ on the apartment itself. Refused on a
|
|
1023
|
+
* space that is not an apartment, and while the building's time zone (Space.time_zone) is
|
|
1024
|
+
* unknown, since periods are cut at its midnights.
|
|
1025
|
+
*
|
|
1026
|
+
* The range is half-open over the periods' starts: a period is returned when from_time <=
|
|
1027
|
+
* starts_at < to_time. Unset from_time means kept_from; unset to_time means now. Both are
|
|
1028
|
+
* clamped to [kept_from, the start of the period running now — or now, if none is] (see
|
|
1029
|
+
* ApartmentClimateSummary).
|
|
1030
|
+
*
|
|
1031
|
+
* @generated from message kusinta.iot.webrtc.v1.GetApartmentClimateSummary
|
|
1032
|
+
*/
|
|
1033
|
+
export declare type GetApartmentClimateSummary = Message<"kusinta.iot.webrtc.v1.GetApartmentClimateSummary"> & {
|
|
1034
|
+
/**
|
|
1035
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId apartment_id = 1;
|
|
1036
|
+
*/
|
|
1037
|
+
apartmentId?: SpaceId | undefined;
|
|
1038
|
+
|
|
1039
|
+
/**
|
|
1040
|
+
* Unset asks for the period the apartment's privacy disclosure names
|
|
1041
|
+
* (PrivacyDisclosure.climate_summary_period), or weeks when it names none. Anyone but the
|
|
1042
|
+
* apartment's residents may ask for that period only, and is refused as NOT_ENTITLED for
|
|
1043
|
+
* any other or when it names none. Its residents may ask for any, and are given only
|
|
1044
|
+
* periods that began in their current residency.
|
|
1045
|
+
*
|
|
1046
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateSummaryPeriod period = 2;
|
|
1047
|
+
*/
|
|
1048
|
+
period: ClimateSummaryPeriod;
|
|
1049
|
+
|
|
1050
|
+
/**
|
|
1051
|
+
* @generated from field: google.protobuf.Timestamp from_time = 3;
|
|
1052
|
+
*/
|
|
1053
|
+
fromTime?: Timestamp | undefined;
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* @generated from field: google.protobuf.Timestamp to_time = 4;
|
|
1057
|
+
*/
|
|
1058
|
+
toTime?: Timestamp | undefined;
|
|
1059
|
+
};
|
|
1060
|
+
|
|
1061
|
+
/**
|
|
1062
|
+
* Describes the message kusinta.iot.webrtc.v1.GetApartmentClimateSummary.
|
|
1063
|
+
* Use `create(GetApartmentClimateSummarySchema)` to create a new message.
|
|
1064
|
+
*/
|
|
1065
|
+
export declare const GetApartmentClimateSummarySchema: GenMessage<GetApartmentClimateSummary>;
|
|
1066
|
+
|
|
1067
|
+
/**
|
|
377
1068
|
* @generated from message kusinta.iot.webrtc.v1.ManagementRequest
|
|
378
1069
|
*/
|
|
379
1070
|
export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.ManagementRequest"> & {
|
|
@@ -440,6 +1131,78 @@ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.Managemen
|
|
|
440
1131
|
*/
|
|
441
1132
|
value: ListSpaces;
|
|
442
1133
|
case: "listSpaces";
|
|
1134
|
+
} | {
|
|
1135
|
+
/**
|
|
1136
|
+
* @generated from field: kusinta.iot.webrtc.v1.CreateDeviceLink create_device_link = 11;
|
|
1137
|
+
*/
|
|
1138
|
+
value: CreateDeviceLink;
|
|
1139
|
+
case: "createDeviceLink";
|
|
1140
|
+
} | {
|
|
1141
|
+
/**
|
|
1142
|
+
* @generated from field: kusinta.iot.webrtc.v1.RemoveDeviceLink remove_device_link = 12;
|
|
1143
|
+
*/
|
|
1144
|
+
value: RemoveDeviceLink;
|
|
1145
|
+
case: "removeDeviceLink";
|
|
1146
|
+
} | {
|
|
1147
|
+
/**
|
|
1148
|
+
* @generated from field: kusinta.iot.webrtc.v1.ListDeviceLinks list_device_links = 13;
|
|
1149
|
+
*/
|
|
1150
|
+
value: ListDeviceLinks;
|
|
1151
|
+
case: "listDeviceLinks";
|
|
1152
|
+
} | {
|
|
1153
|
+
/**
|
|
1154
|
+
* @generated from field: kusinta.iot.webrtc.v1.UpdateDeviceLink update_device_link = 14;
|
|
1155
|
+
*/
|
|
1156
|
+
value: UpdateDeviceLink;
|
|
1157
|
+
case: "updateDeviceLink";
|
|
1158
|
+
} | {
|
|
1159
|
+
/**
|
|
1160
|
+
* @generated from field: kusinta.iot.webrtc.v1.ProvisionDevice provision_device = 15;
|
|
1161
|
+
*/
|
|
1162
|
+
value: ProvisionDevice;
|
|
1163
|
+
case: "provisionDevice";
|
|
1164
|
+
} | {
|
|
1165
|
+
/**
|
|
1166
|
+
* @generated from field: kusinta.iot.webrtc.v1.SetRoomTarget set_room_target = 16;
|
|
1167
|
+
*/
|
|
1168
|
+
value: SetRoomTarget;
|
|
1169
|
+
case: "setRoomTarget";
|
|
1170
|
+
} | {
|
|
1171
|
+
/**
|
|
1172
|
+
* @generated from field: kusinta.iot.webrtc.v1.ConfigureRoomClimate configure_room_climate = 17;
|
|
1173
|
+
*/
|
|
1174
|
+
value: ConfigureRoomClimate;
|
|
1175
|
+
case: "configureRoomClimate";
|
|
1176
|
+
} | {
|
|
1177
|
+
/**
|
|
1178
|
+
* @generated from field: kusinta.iot.webrtc.v1.SetClimateMode set_climate_mode = 18;
|
|
1179
|
+
*/
|
|
1180
|
+
value: SetClimateMode;
|
|
1181
|
+
case: "setClimateMode";
|
|
1182
|
+
} | {
|
|
1183
|
+
/**
|
|
1184
|
+
* @generated from field: kusinta.iot.webrtc.v1.ListRoomClimates list_room_climates = 19;
|
|
1185
|
+
*/
|
|
1186
|
+
value: ListRoomClimates;
|
|
1187
|
+
case: "listRoomClimates";
|
|
1188
|
+
} | {
|
|
1189
|
+
/**
|
|
1190
|
+
* @generated from field: kusinta.iot.webrtc.v1.GetRoomHistory get_room_history = 20;
|
|
1191
|
+
*/
|
|
1192
|
+
value: GetRoomHistory;
|
|
1193
|
+
case: "getRoomHistory";
|
|
1194
|
+
} | {
|
|
1195
|
+
/**
|
|
1196
|
+
* @generated from field: kusinta.iot.webrtc.v1.GetPrivacyDisclosure get_privacy_disclosure = 21;
|
|
1197
|
+
*/
|
|
1198
|
+
value: GetPrivacyDisclosure;
|
|
1199
|
+
case: "getPrivacyDisclosure";
|
|
1200
|
+
} | {
|
|
1201
|
+
/**
|
|
1202
|
+
* @generated from field: kusinta.iot.webrtc.v1.GetApartmentClimateSummary get_apartment_climate_summary = 22;
|
|
1203
|
+
*/
|
|
1204
|
+
value: GetApartmentClimateSummary;
|
|
1205
|
+
case: "getApartmentClimateSummary";
|
|
443
1206
|
} | { case: undefined; value?: undefined };
|
|
444
1207
|
};
|
|
445
1208
|
|