@kusinta/iot-schema 0.2.0-beta.34 → 0.2.0-beta.36
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 +1 -1
- package/src/kusinta/iot/access/v1/roles_pb.d.ts +5 -4
- package/src/kusinta/iot/access/v1/roles_pb.js +5 -4
- package/src/kusinta/iot/climate/v1/climate_pb.d.ts +304 -0
- package/src/kusinta/iot/climate/v1/climate_pb.js +74 -10
- package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +194 -1
- package/src/kusinta/iot/device/v1/cluster_state_pb.js +37 -2
- package/src/kusinta/iot/device/v1/device_pb.d.ts +39 -2
- package/src/kusinta/iot/device/v1/device_pb.js +1 -1
- package/src/kusinta/iot/registration/v1/registration_pb.d.ts +18 -0
- package/src/kusinta/iot/registration/v1/registration_pb.js +1 -1
- package/src/kusinta/iot/reporting/v1/reporting_pb.d.ts +21 -15
- package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +520 -4
- package/src/kusinta/iot/signaling/v1/signaling_pb.js +101 -7
- package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +10 -7
- package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +42 -0
- package/src/kusinta/iot/webrtc/v1/command_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +18 -1
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/invite_pb.d.ts +2 -2
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +31 -6
- package/src/kusinta/iot/webrtc/v1/management_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/members_pb.d.ts +223 -34
- package/src/kusinta/iot/webrtc/v1/members_pb.js +43 -8
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
7
|
import type { GatewayId, UserId } from "../../identity/v1/identity_pb.js";
|
|
8
|
+
import type { ConnectorKind } from "../../common/v1/types_pb.js";
|
|
9
|
+
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
8
10
|
|
|
9
11
|
/**
|
|
10
12
|
* Describes the file kusinta/iot/signaling/v1/signaling.proto.
|
|
@@ -174,7 +176,8 @@ export declare const UserHandshakeAckSchema: GenMessage<UserHandshakeAck>;
|
|
|
174
176
|
*/
|
|
175
177
|
export declare type GatewayConnectRequest = Message<"kusinta.iot.signaling.v1.GatewayConnectRequest"> & {
|
|
176
178
|
/**
|
|
177
|
-
* On redeem_invite_result, the user who redeemed (RedeemInvite).
|
|
179
|
+
* On redeem_invite_result, the user who redeemed (RedeemInvite). Unset on an
|
|
180
|
+
* acknowledgement, which is to no user.
|
|
178
181
|
*
|
|
179
182
|
* @generated from field: kusinta.iot.identity.v1.UserId target_user_id = 1;
|
|
180
183
|
*/
|
|
@@ -183,7 +186,7 @@ export declare type GatewayConnectRequest = Message<"kusinta.iot.signaling.v1.Ga
|
|
|
183
186
|
/**
|
|
184
187
|
* The session of target_user_id this message answers. See the contract above.
|
|
185
188
|
* Ignored on a heartbeat, which carries no routing target at all, and on
|
|
186
|
-
* redeem_invite_result, which
|
|
189
|
+
* redeem_invite_result and the acknowledgements, which belong to no session.
|
|
187
190
|
*
|
|
188
191
|
* @generated from field: string session_id = 5;
|
|
189
192
|
*/
|
|
@@ -216,6 +219,24 @@ export declare type GatewayConnectRequest = Message<"kusinta.iot.signaling.v1.Ga
|
|
|
216
219
|
*/
|
|
217
220
|
value: RedeemInviteResult;
|
|
218
221
|
case: "redeemInviteResult";
|
|
222
|
+
} | {
|
|
223
|
+
/**
|
|
224
|
+
* @generated from field: kusinta.iot.signaling.v1.VouchedAdministratorsApplied vouched_administrators_applied = 7;
|
|
225
|
+
*/
|
|
226
|
+
value: VouchedAdministratorsApplied;
|
|
227
|
+
case: "vouchedAdministratorsApplied";
|
|
228
|
+
} | {
|
|
229
|
+
/**
|
|
230
|
+
* @generated from field: kusinta.iot.signaling.v1.TransferOutcomeApplied transfer_outcome_applied = 8;
|
|
231
|
+
*/
|
|
232
|
+
value: TransferOutcomeApplied;
|
|
233
|
+
case: "transferOutcomeApplied";
|
|
234
|
+
} | {
|
|
235
|
+
/**
|
|
236
|
+
* @generated from field: kusinta.iot.signaling.v1.GatewayWiped wiped = 9;
|
|
237
|
+
*/
|
|
238
|
+
value: GatewayWiped;
|
|
239
|
+
case: "wiped";
|
|
219
240
|
} | { case: undefined; value?: undefined };
|
|
220
241
|
};
|
|
221
242
|
|
|
@@ -233,7 +254,9 @@ export declare const GatewayConnectRequestSchema: GenMessage<GatewayConnectReque
|
|
|
233
254
|
export declare type GatewayConnectResponse = Message<"kusinta.iot.signaling.v1.GatewayConnectResponse"> & {
|
|
234
255
|
/**
|
|
235
256
|
* On redeem_invite, the user redeeming: the sub of the token the api-server
|
|
236
|
-
* verified, and never a value the user supplied.
|
|
257
|
+
* verified, and never a value the user supplied. Unset on what concerns the
|
|
258
|
+
* gateway itself (stream_opened, vouched_administrators, transfer_outcome,
|
|
259
|
+
* gateway_deleted), which is from no user.
|
|
237
260
|
*
|
|
238
261
|
* @generated from field: kusinta.iot.identity.v1.UserId from_user_id = 1;
|
|
239
262
|
*/
|
|
@@ -242,7 +265,8 @@ export declare type GatewayConnectResponse = Message<"kusinta.iot.signaling.v1.G
|
|
|
242
265
|
/**
|
|
243
266
|
* The session of from_user_id this message originates from — the value the
|
|
244
267
|
* gateway must echo on the GatewayConnectRequest that answers it. See the
|
|
245
|
-
* contract above. Unset on redeem_invite
|
|
268
|
+
* contract above. Unset on redeem_invite and on what concerns the gateway
|
|
269
|
+
* itself, which belong to no session.
|
|
246
270
|
*
|
|
247
271
|
* @generated from field: string session_id = 4;
|
|
248
272
|
*/
|
|
@@ -269,6 +293,30 @@ export declare type GatewayConnectResponse = Message<"kusinta.iot.signaling.v1.G
|
|
|
269
293
|
*/
|
|
270
294
|
value: RedeemInvite;
|
|
271
295
|
case: "redeemInvite";
|
|
296
|
+
} | {
|
|
297
|
+
/**
|
|
298
|
+
* @generated from field: kusinta.iot.signaling.v1.VouchedAdministrators vouched_administrators = 6;
|
|
299
|
+
*/
|
|
300
|
+
value: VouchedAdministrators;
|
|
301
|
+
case: "vouchedAdministrators";
|
|
302
|
+
} | {
|
|
303
|
+
/**
|
|
304
|
+
* @generated from field: kusinta.iot.signaling.v1.TransferOutcome transfer_outcome = 7;
|
|
305
|
+
*/
|
|
306
|
+
value: TransferOutcome;
|
|
307
|
+
case: "transferOutcome";
|
|
308
|
+
} | {
|
|
309
|
+
/**
|
|
310
|
+
* @generated from field: kusinta.iot.signaling.v1.GatewayStreamOpened stream_opened = 8;
|
|
311
|
+
*/
|
|
312
|
+
value: GatewayStreamOpened;
|
|
313
|
+
case: "streamOpened";
|
|
314
|
+
} | {
|
|
315
|
+
/**
|
|
316
|
+
* @generated from field: kusinta.iot.signaling.v1.GatewayDeleted gateway_deleted = 9;
|
|
317
|
+
*/
|
|
318
|
+
value: GatewayDeleted;
|
|
319
|
+
case: "gatewayDeleted";
|
|
272
320
|
} | { case: undefined; value?: undefined };
|
|
273
321
|
};
|
|
274
322
|
|
|
@@ -376,6 +424,397 @@ export declare type RedeemInviteResult = Message<"kusinta.iot.signaling.v1.Redee
|
|
|
376
424
|
*/
|
|
377
425
|
export declare const RedeemInviteResultSchema: GenMessage<RedeemInviteResult>;
|
|
378
426
|
|
|
427
|
+
/**
|
|
428
|
+
* The api-server's first message on every GatewayConnect stream, sent before any other. It
|
|
429
|
+
* carries the ownership epoch of the gateway's owner record.
|
|
430
|
+
*
|
|
431
|
+
* OWNER OF RECORD. A gateway is owned by an organisation, which the api-server keeps; the
|
|
432
|
+
* organisation's administrators are the gateway's vouched administrators. The api-server
|
|
433
|
+
* vouches for them twice: in the token of each session one of them opens
|
|
434
|
+
* (webrtc.v1.AppTokenClaims.roles), and to the gateway, as the whole set
|
|
435
|
+
* (VouchedAdministrators). Neither can be changed on the gateway. A gateway moves to another
|
|
436
|
+
* organisation only by a transfer the receiving organisation accepted (TransferOutcome).
|
|
437
|
+
*
|
|
438
|
+
* OWNERSHIP EPOCH. An opaque id the api-server gives each owner record of a gateway. It is new
|
|
439
|
+
* at the first registration after the gateway was deleted, and only then: a revoke, a
|
|
440
|
+
* re-registration by the owning organisation and a transfer all keep it. The gateway takes it
|
|
441
|
+
* from the api-server's answer to its own registration (registration.v1.RegistrationComplete)
|
|
442
|
+
* and from this message, and from nowhere else: never from an app session, nor from anything an
|
|
443
|
+
* app hands over, the registration token included. It keeps the epoch it holds across restarts.
|
|
444
|
+
*
|
|
445
|
+
* Given an epoch other than the one it holds, the gateway wipes people and history (see
|
|
446
|
+
* GatewayDeleted, WIPE), space names included, before it admits any session or applies anything
|
|
447
|
+
* else from that registration or stream, and then holds the new epoch. A gateway holding no epoch takes the first it is given and wipes nothing. The
|
|
448
|
+
* epoch it holds, given again, changes nothing, so the same epoch twice wipes once.
|
|
449
|
+
*
|
|
450
|
+
* A gateway that holds an epoch treats a stream on which anything arrives before this message,
|
|
451
|
+
* or this message with an empty epoch, as not open: it applies nothing from it and closes it.
|
|
452
|
+
* So the api-server must send this message first on every stream before a gateway that
|
|
453
|
+
* requires it is deployed.
|
|
454
|
+
*
|
|
455
|
+
* @generated from message kusinta.iot.signaling.v1.GatewayStreamOpened
|
|
456
|
+
*/
|
|
457
|
+
export declare type GatewayStreamOpened = Message<"kusinta.iot.signaling.v1.GatewayStreamOpened"> & {
|
|
458
|
+
/**
|
|
459
|
+
* @generated from field: string ownership_epoch = 1;
|
|
460
|
+
*/
|
|
461
|
+
ownershipEpoch: string;
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Describes the message kusinta.iot.signaling.v1.GatewayStreamOpened.
|
|
466
|
+
* Use `create(GatewayStreamOpenedSchema)` to create a new message.
|
|
467
|
+
*/
|
|
468
|
+
export declare const GatewayStreamOpenedSchema: GenMessage<GatewayStreamOpened>;
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* The gateway was deleted at the api-server, api-server → gateway: the owner record with
|
|
472
|
+
* ownership_epoch has ended, and the gateway decommissions at once. Sent to a connected gateway
|
|
473
|
+
* before the api-server ends its stream, and answered with GatewayWiped. A gateway offline when
|
|
474
|
+
* it is deleted learns it from the new epoch at its next registration instead
|
|
475
|
+
* (GatewayStreamOpened, OWNERSHIP EPOCH), and wipes then just as it would have now.
|
|
476
|
+
*
|
|
477
|
+
* A delete is not a revoke. A revoke ends the gateway's certificate and keeps its owner: it sends
|
|
478
|
+
* no notice and wipes nothing, and a revoked gateway registered again by the owning organisation
|
|
479
|
+
* keeps everything. A delete ends the owner record itself, so the gateway starts empty for
|
|
480
|
+
* whoever registers it next, and nothing about people is carried to an organisation that did not
|
|
481
|
+
* choose it.
|
|
482
|
+
*
|
|
483
|
+
* A notice naming the epoch the gateway holds makes it wipe at once, in the scope asked and
|
|
484
|
+
* before it applies anything else, and then hold no epoch. A repeat of the notice it last applied
|
|
485
|
+
* is acknowledged again as before and changes nothing; a notice naming any other epoch is
|
|
486
|
+
* ignored.
|
|
487
|
+
*
|
|
488
|
+
* WIPE. A wipe of people and history (WIPE_SCOPE_PEOPLE_AND_HISTORY) keeps the building's setup:
|
|
489
|
+
* its spaces, with their structure and types; its devices and how they are filed; device links;
|
|
490
|
+
* connector configuration; the building's time zone; and the gateway's own credentials and the
|
|
491
|
+
* settings that are not about people. Everything about people goes: every user, role,
|
|
492
|
+
* membership and residency, with its residency id; every invite, join request and promotion
|
|
493
|
+
* request; every name and email address; the vouched administrators and their version; every end
|
|
494
|
+
* of access; every device's ownership, an owned device staying filed where it is, released, as
|
|
495
|
+
* one of the building's own; every contact; and everything recorded per home — room history,
|
|
496
|
+
* climate summaries, events, targets, modes and routines — including what is still queued for the
|
|
497
|
+
* api-server about any of them, and the gateway's own records of who did what. Every open session
|
|
498
|
+
* ends, and none is admitted until the wipe is done.
|
|
499
|
+
*
|
|
500
|
+
* Logs. A wipe takes what the gateway itself keeps; the operating system's log of the host it
|
|
501
|
+
* runs on is not the gateway's to erase, and what it holds stays until the host's own retention
|
|
502
|
+
* drops it. A gateway SHOULD NOT write user ids or names to that log in normal operation, so that
|
|
503
|
+
* nothing about people outlives a wipe there.
|
|
504
|
+
*
|
|
505
|
+
* It always renames every space too, since a name can name a person ("Ilse's room"): each gets a
|
|
506
|
+
* generic name, its type and its number among the spaces of that type under the same parent,
|
|
507
|
+
* counted from 1 in the order the gateway lists them — "Apartment 1", "Floor 2", "Room 3". In
|
|
508
|
+
* English, as here, since nothing on the gateway knows the building's language. The renaming is
|
|
509
|
+
* part of the wipe: done in the same step, all of it or none, and keyed by the same epoch, so it
|
|
510
|
+
* is done once per epoch as the rest is.
|
|
511
|
+
* No space is removed or moved by it; each keeps its type, its place in the structure, its
|
|
512
|
+
* devices, its filing and its links.
|
|
513
|
+
*
|
|
514
|
+
* The gateway then reports as a gateway starting afresh does: on new streams, a snapshot with no
|
|
515
|
+
* members (reporting.v1.ReportMembersRequest), no service reach and no invite routes, so the
|
|
516
|
+
* api-server's record of who belongs to the gateway empties too.
|
|
517
|
+
*
|
|
518
|
+
* @generated from message kusinta.iot.signaling.v1.GatewayDeleted
|
|
519
|
+
*/
|
|
520
|
+
export declare type GatewayDeleted = Message<"kusinta.iot.signaling.v1.GatewayDeleted"> & {
|
|
521
|
+
/**
|
|
522
|
+
* @generated from field: string ownership_epoch = 1;
|
|
523
|
+
*/
|
|
524
|
+
ownershipEpoch: string;
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* @generated from field: kusinta.iot.signaling.v1.WipeScope scope = 2;
|
|
528
|
+
*/
|
|
529
|
+
scope: WipeScope;
|
|
530
|
+
};
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Describes the message kusinta.iot.signaling.v1.GatewayDeleted.
|
|
534
|
+
* Use `create(GatewayDeletedSchema)` to create a new message.
|
|
535
|
+
*/
|
|
536
|
+
export declare const GatewayDeletedSchema: GenMessage<GatewayDeleted>;
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* The gateway's acknowledgement of a GatewayDeleted, gateway → api-server: what it wiped.
|
|
540
|
+
*
|
|
541
|
+
* For WIPE_SCOPE_PEOPLE_AND_HISTORY, sent once the wipe is done. For WIPE_SCOPE_FACTORY_RESET,
|
|
542
|
+
* sent once everything but the gateway's credentials is gone and before it erases those, since
|
|
543
|
+
* sending needs them; the credentials go at once after. The api-server then revokes the gateway's
|
|
544
|
+
* certificate.
|
|
545
|
+
*
|
|
546
|
+
* @generated from message kusinta.iot.signaling.v1.GatewayWiped
|
|
547
|
+
*/
|
|
548
|
+
export declare type GatewayWiped = Message<"kusinta.iot.signaling.v1.GatewayWiped"> & {
|
|
549
|
+
/**
|
|
550
|
+
* As GatewayDeleted.ownership_epoch.
|
|
551
|
+
*
|
|
552
|
+
* @generated from field: string ownership_epoch = 1;
|
|
553
|
+
*/
|
|
554
|
+
ownershipEpoch: string;
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* The scope the gateway applied: WIPE_SCOPE_PEOPLE_AND_HISTORY when it was asked for that, and
|
|
558
|
+
* when it was asked for a factory reset it does not perform.
|
|
559
|
+
*
|
|
560
|
+
* @generated from field: kusinta.iot.signaling.v1.WipeScope scope = 2;
|
|
561
|
+
*/
|
|
562
|
+
scope: WipeScope;
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* With WIPE_SCOPE_FACTORY_RESET: each piece of other hardware that still holds pairings the
|
|
566
|
+
* reset could not reach, for the person who asked to reset it by hand. Empty otherwise.
|
|
567
|
+
*
|
|
568
|
+
* @generated from field: repeated kusinta.iot.signaling.v1.PairingsLeftBehind left_behind = 3;
|
|
569
|
+
*/
|
|
570
|
+
leftBehind: PairingsLeftBehind[];
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* Describes the message kusinta.iot.signaling.v1.GatewayWiped.
|
|
575
|
+
* Use `create(GatewayWipedSchema)` to create a new message.
|
|
576
|
+
*/
|
|
577
|
+
export declare const GatewayWipedSchema: GenMessage<GatewayWiped>;
|
|
578
|
+
|
|
579
|
+
/**
|
|
580
|
+
* Hardware a connector drives that keeps its own pairings through a factory reset.
|
|
581
|
+
*
|
|
582
|
+
* @generated from message kusinta.iot.signaling.v1.PairingsLeftBehind
|
|
583
|
+
*/
|
|
584
|
+
export declare type PairingsLeftBehind = Message<"kusinta.iot.signaling.v1.PairingsLeftBehind"> & {
|
|
585
|
+
/**
|
|
586
|
+
* As the connector described itself (webrtc.v1.ConnectorDescriptor): what kind of hardware,
|
|
587
|
+
* and its name, for a person.
|
|
588
|
+
*
|
|
589
|
+
* @generated from field: kusinta.iot.common.v1.ConnectorKind kind = 1;
|
|
590
|
+
*/
|
|
591
|
+
kind: ConnectorKind;
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* @generated from field: string display_name = 2;
|
|
595
|
+
*/
|
|
596
|
+
displayName: string;
|
|
597
|
+
};
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Describes the message kusinta.iot.signaling.v1.PairingsLeftBehind.
|
|
601
|
+
* Use `create(PairingsLeftBehindSchema)` to create a new message.
|
|
602
|
+
*/
|
|
603
|
+
export declare const PairingsLeftBehindSchema: GenMessage<PairingsLeftBehind>;
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* The administrators of the organisation that owns the gateway, api-server → gateway: the whole
|
|
607
|
+
* set each time, never a change to it.
|
|
608
|
+
*
|
|
609
|
+
* The api-server sends it on every stream, after GatewayStreamOpened and any unacknowledged
|
|
610
|
+
* TransferOutcome, and again whenever the set or the organisation's name changes. It sends the
|
|
611
|
+
* newest set again on every stream until the gateway acknowledges its version
|
|
612
|
+
* (VouchedAdministratorsApplied).
|
|
613
|
+
*
|
|
614
|
+
* It grants nothing on its own. A session holds ROLE_GATEWAY_ADMIN as a vouched administrator
|
|
615
|
+
* only when the token it opened with carries it (webrtc.v1.AppTokenClaims.roles); a user named
|
|
616
|
+
* here who connects with a token that does not is no administrator in that session. What the set
|
|
617
|
+
* says is who the administrators are between their tokens:
|
|
618
|
+
* * every user it names is a member of the gateway, listed as a vouched administrator
|
|
619
|
+
* (webrtc.v1.MemberDetail.vouched_admin) and counted under ROLE_GATEWAY_ADMIN, whether or not
|
|
620
|
+
* the gateway has seen them connect. Their name and email address are learnt from their own
|
|
621
|
+
* tokens, and are unknown until then;
|
|
622
|
+
* * their administration cannot be changed on the gateway (webrtc.v1 members.proto,
|
|
623
|
+
* "vouched_admin");
|
|
624
|
+
* * when a set the gateway applies drops a user, the gateway ends the administration of every
|
|
625
|
+
* open session of theirs at once, without waiting for them to reconnect: the session loses
|
|
626
|
+
* ROLE_GATEWAY_ADMIN as any change of role reaches it (webrtc.v1.LivePermissionUpdate,
|
|
627
|
+
* session_roles), unless the gateway holds that role for them itself;
|
|
628
|
+
* * a token issued (AppTokenClaims.iat, in whole seconds) no later than the second in which
|
|
629
|
+
* the set the gateway holds was issued, for a user that set does not name, vouches for no
|
|
630
|
+
* administration, so a token minted before a user was dropped cannot bring it back. A token
|
|
631
|
+
* issued later is honoured whether or not the set names its user, since the set may lag
|
|
632
|
+
* behind it.
|
|
633
|
+
*
|
|
634
|
+
* Safe to lose, repeat and reorder: the gateway applies a set only when its version is above the
|
|
635
|
+
* one it holds, ignores any other, and acknowledges each with the version it then holds. It keeps
|
|
636
|
+
* the set it holds, with its version and issued_at, across restarts, so a restart forgets nothing
|
|
637
|
+
* before the stream opens again. A wipe drops it, version included (GatewayDeleted, WIPE), so the
|
|
638
|
+
* versions of a new owner record start afresh.
|
|
639
|
+
*
|
|
640
|
+
* @generated from message kusinta.iot.signaling.v1.VouchedAdministrators
|
|
641
|
+
*/
|
|
642
|
+
export declare type VouchedAdministrators = Message<"kusinta.iot.signaling.v1.VouchedAdministrators"> & {
|
|
643
|
+
/**
|
|
644
|
+
* Above that of every set the api-server sent before under the same ownership epoch. Never zero.
|
|
645
|
+
*
|
|
646
|
+
* @generated from field: uint64 version = 1;
|
|
647
|
+
*/
|
|
648
|
+
version: bigint;
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* Each administrator of the owning organisation, once. Never empty, since an organisation
|
|
652
|
+
* always has one. The set carries no one's name or email address.
|
|
653
|
+
*
|
|
654
|
+
* @generated from field: repeated kusinta.iot.identity.v1.UserId administrators = 2;
|
|
655
|
+
*/
|
|
656
|
+
administrators: UserId[];
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* The owning organisation's name, as its administrators set it: what
|
|
660
|
+
* webrtc.v1.PrivacyDisclosure.owner_organisation_name tells. Never its organisation number.
|
|
661
|
+
*
|
|
662
|
+
* @generated from field: string organisation_name = 3;
|
|
663
|
+
*/
|
|
664
|
+
organisationName: string;
|
|
665
|
+
|
|
666
|
+
/**
|
|
667
|
+
* When the api-server made this set, on the clock that sets AppTokenClaims.iat, so the two
|
|
668
|
+
* compare. Never earlier than an earlier version's.
|
|
669
|
+
*
|
|
670
|
+
* @generated from field: google.protobuf.Timestamp issued_at = 4;
|
|
671
|
+
*/
|
|
672
|
+
issuedAt?: Timestamp | undefined;
|
|
673
|
+
};
|
|
674
|
+
|
|
675
|
+
/**
|
|
676
|
+
* Describes the message kusinta.iot.signaling.v1.VouchedAdministrators.
|
|
677
|
+
* Use `create(VouchedAdministratorsSchema)` to create a new message.
|
|
678
|
+
*/
|
|
679
|
+
export declare const VouchedAdministratorsSchema: GenMessage<VouchedAdministrators>;
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* The gateway's acknowledgement of a VouchedAdministrators, gateway → api-server.
|
|
683
|
+
*
|
|
684
|
+
* @generated from message kusinta.iot.signaling.v1.VouchedAdministratorsApplied
|
|
685
|
+
*/
|
|
686
|
+
export declare type VouchedAdministratorsApplied = Message<"kusinta.iot.signaling.v1.VouchedAdministratorsApplied"> & {
|
|
687
|
+
/**
|
|
688
|
+
* The version the gateway holds once it has applied or ignored the set, which may be above
|
|
689
|
+
* the one acknowledged. The api-server sends no set at or below it again.
|
|
690
|
+
*
|
|
691
|
+
* @generated from field: uint64 version = 1;
|
|
692
|
+
*/
|
|
693
|
+
version: bigint;
|
|
694
|
+
};
|
|
695
|
+
|
|
696
|
+
/**
|
|
697
|
+
* Describes the message kusinta.iot.signaling.v1.VouchedAdministratorsApplied.
|
|
698
|
+
* Use `create(VouchedAdministratorsAppliedSchema)` to create a new message.
|
|
699
|
+
*/
|
|
700
|
+
export declare const VouchedAdministratorsAppliedSchema: GenMessage<VouchedAdministratorsApplied>;
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* A transfer of the gateway to another organisation, accepted by an administrator of the
|
|
704
|
+
* receiving one, api-server → gateway. It carries the receiving organisation's vouched set and
|
|
705
|
+
* what becomes of each outgoing staff member, and the gateway applies the two in one step — all
|
|
706
|
+
* of it or none — before anything after it on the stream. The ownership epoch is kept: residents,
|
|
707
|
+
* technicians, spaces and devices stay as they are.
|
|
708
|
+
*
|
|
709
|
+
* The api-server keeps an outcome until the gateway acknowledges it (TransferOutcomeApplied),
|
|
710
|
+
* through the gateway's offline spells, and sends it on every stream right after
|
|
711
|
+
* GatewayStreamOpened. While one is unacknowledged it sends the vouched set only inside it, as
|
|
712
|
+
* administrators, the newest set. Applying is idempotent by transfer_id: an outcome already
|
|
713
|
+
* applied is acknowledged again, its outgoing choices are not applied again, and its set is
|
|
714
|
+
* applied as any VouchedAdministrators is, by version.
|
|
715
|
+
*
|
|
716
|
+
* The outgoing staff are everyone named in outgoing and everyone holding ROLE_GATEWAY_ADMIN or
|
|
717
|
+
* ROLE_PROPERTY_OWNER on the gateway as the outcome is applied — save anyone the new set names,
|
|
718
|
+
* who is of the receiving organisation and is left as they are. The api-server names in outgoing
|
|
719
|
+
* every administrator of the sending organisation, and everyone it holds as reported with
|
|
720
|
+
* ROLE_GATEWAY_ADMIN or ROLE_PROPERTY_OWNER (reporting.v1.GatewayMember). Each outgoing staff
|
|
721
|
+
* member either:
|
|
722
|
+
* * leaves: their choice is LEAVE, UNSPECIFIED or a value the gateway does not know, or they
|
|
723
|
+
* are not named in outgoing at all, so a transfer keeps no one by omission. The gateway takes
|
|
724
|
+
* every role it holds for them and every SERVICE membership, with the pending invites they
|
|
725
|
+
* made as staff, as RemoveFromGateway by user id does from a caller who lives in none of
|
|
726
|
+
* their homes. It never ends a residency, nor the invites they made as its resident;
|
|
727
|
+
* * or stays as a technician: STAY_AS_TECHNICIAN. The gateway takes ROLE_GATEWAY_ADMIN and
|
|
728
|
+
* ROLE_PROPERTY_OWNER as webrtc.v1.SetMemberRole taking them away does, gives
|
|
729
|
+
* ROLE_TECHNICIAN, keeps their SERVICE memberships, files them SERVICE on every top-level
|
|
730
|
+
* space they are not filed on, and sets access_until as webrtc.v1.SetAccessUntil does. One
|
|
731
|
+
* whose access_until is not after the moment the outcome is applied leaves instead.
|
|
732
|
+
* Every change reaches the outgoing staff's open sessions at once, as a change of role does.
|
|
733
|
+
*
|
|
734
|
+
* @generated from message kusinta.iot.signaling.v1.TransferOutcome
|
|
735
|
+
*/
|
|
736
|
+
export declare type TransferOutcome = Message<"kusinta.iot.signaling.v1.TransferOutcome"> & {
|
|
737
|
+
/**
|
|
738
|
+
* Minted by the api-server, opaque, unique among the gateway's transfers.
|
|
739
|
+
*
|
|
740
|
+
* @generated from field: string transfer_id = 1;
|
|
741
|
+
*/
|
|
742
|
+
transferId: string;
|
|
743
|
+
|
|
744
|
+
/**
|
|
745
|
+
* The receiving organisation's vouched set, as it stands.
|
|
746
|
+
*
|
|
747
|
+
* @generated from field: kusinta.iot.signaling.v1.VouchedAdministrators administrators = 2;
|
|
748
|
+
*/
|
|
749
|
+
administrators?: VouchedAdministrators | undefined;
|
|
750
|
+
|
|
751
|
+
/**
|
|
752
|
+
* What becomes of each outgoing staff member, once each.
|
|
753
|
+
*
|
|
754
|
+
* @generated from field: repeated kusinta.iot.signaling.v1.OutgoingChoice outgoing = 3;
|
|
755
|
+
*/
|
|
756
|
+
outgoing: OutgoingChoice[];
|
|
757
|
+
};
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* Describes the message kusinta.iot.signaling.v1.TransferOutcome.
|
|
761
|
+
* Use `create(TransferOutcomeSchema)` to create a new message.
|
|
762
|
+
*/
|
|
763
|
+
export declare const TransferOutcomeSchema: GenMessage<TransferOutcome>;
|
|
764
|
+
|
|
765
|
+
/**
|
|
766
|
+
* What a transfer does with one outgoing staff member (TransferOutcome).
|
|
767
|
+
*
|
|
768
|
+
* @generated from message kusinta.iot.signaling.v1.OutgoingChoice
|
|
769
|
+
*/
|
|
770
|
+
export declare type OutgoingChoice = Message<"kusinta.iot.signaling.v1.OutgoingChoice"> & {
|
|
771
|
+
/**
|
|
772
|
+
* @generated from field: kusinta.iot.identity.v1.UserId user_id = 1;
|
|
773
|
+
*/
|
|
774
|
+
userId?: UserId | undefined;
|
|
775
|
+
|
|
776
|
+
/**
|
|
777
|
+
* @generated from field: kusinta.iot.signaling.v1.OutgoingStaffChoice choice = 2;
|
|
778
|
+
*/
|
|
779
|
+
choice: OutgoingStaffChoice;
|
|
780
|
+
|
|
781
|
+
/**
|
|
782
|
+
* When their access as a technician ends; unset for no end. Only with STAY_AS_TECHNICIAN, and
|
|
783
|
+
* ignored with any other choice.
|
|
784
|
+
*
|
|
785
|
+
* @generated from field: google.protobuf.Timestamp access_until = 3;
|
|
786
|
+
*/
|
|
787
|
+
accessUntil?: Timestamp | undefined;
|
|
788
|
+
};
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* Describes the message kusinta.iot.signaling.v1.OutgoingChoice.
|
|
792
|
+
* Use `create(OutgoingChoiceSchema)` to create a new message.
|
|
793
|
+
*/
|
|
794
|
+
export declare const OutgoingChoiceSchema: GenMessage<OutgoingChoice>;
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* The gateway's acknowledgement of a TransferOutcome, gateway → api-server: applied now or
|
|
798
|
+
* before. It acknowledges the outcome's vouched set too. The api-server sends the outcome no
|
|
799
|
+
* more.
|
|
800
|
+
*
|
|
801
|
+
* @generated from message kusinta.iot.signaling.v1.TransferOutcomeApplied
|
|
802
|
+
*/
|
|
803
|
+
export declare type TransferOutcomeApplied = Message<"kusinta.iot.signaling.v1.TransferOutcomeApplied"> & {
|
|
804
|
+
/**
|
|
805
|
+
* As TransferOutcome.transfer_id.
|
|
806
|
+
*
|
|
807
|
+
* @generated from field: string transfer_id = 1;
|
|
808
|
+
*/
|
|
809
|
+
transferId: string;
|
|
810
|
+
};
|
|
811
|
+
|
|
812
|
+
/**
|
|
813
|
+
* Describes the message kusinta.iot.signaling.v1.TransferOutcomeApplied.
|
|
814
|
+
* Use `create(TransferOutcomeAppliedSchema)` to create a new message.
|
|
815
|
+
*/
|
|
816
|
+
export declare const TransferOutcomeAppliedSchema: GenMessage<TransferOutcomeApplied>;
|
|
817
|
+
|
|
379
818
|
/**
|
|
380
819
|
* Messages sent by the app (GatewaySignalingService.UserConnect stream).
|
|
381
820
|
* Auth: Authorization: Bearer <jwt> in gRPC request metadata (validated by interceptor).
|
|
@@ -672,3 +1111,80 @@ export enum RedeemOutcome {
|
|
|
672
1111
|
*/
|
|
673
1112
|
export declare const RedeemOutcomeSchema: GenEnum<RedeemOutcome>;
|
|
674
1113
|
|
|
1114
|
+
/**
|
|
1115
|
+
* How much a wipe takes (GatewayDeleted).
|
|
1116
|
+
*
|
|
1117
|
+
* @generated from enum kusinta.iot.signaling.v1.WipeScope
|
|
1118
|
+
*/
|
|
1119
|
+
export enum WipeScope {
|
|
1120
|
+
/**
|
|
1121
|
+
* Not stated. Read as PEOPLE_AND_HISTORY, as is any value the gateway does not know.
|
|
1122
|
+
*
|
|
1123
|
+
* @generated from enum value: WIPE_SCOPE_UNSPECIFIED = 0;
|
|
1124
|
+
*/
|
|
1125
|
+
UNSPECIFIED = 0,
|
|
1126
|
+
|
|
1127
|
+
/**
|
|
1128
|
+
* Decommissioning: people and their history go, every space is given a generic name, and the
|
|
1129
|
+
* rest of the building's setup stays (GatewayDeleted, WIPE).
|
|
1130
|
+
*
|
|
1131
|
+
* @generated from enum value: WIPE_SCOPE_PEOPLE_AND_HISTORY = 1;
|
|
1132
|
+
*/
|
|
1133
|
+
PEOPLE_AND_HISTORY = 1,
|
|
1134
|
+
|
|
1135
|
+
/**
|
|
1136
|
+
* Out of the box, for a gateway that is to be used anywhere else: everything the gateway holds
|
|
1137
|
+
* goes — what a wipe of people and history takes and also the building's setup, the gateway's
|
|
1138
|
+
* certificates, keys and registration, connector configuration, the readings connectors store
|
|
1139
|
+
* on the gateway, and the log files it keeps itself (not the host's system log: see WIPE, Logs).
|
|
1140
|
+
* What is held in other hardware is not reached: devices paired
|
|
1141
|
+
* to a radio central the gateway drives stay paired there until that is reset too, and the
|
|
1142
|
+
* gateway says so (GatewayWiped.left_behind).
|
|
1143
|
+
*
|
|
1144
|
+
* A gateway that does not perform a factory reset wipes people and history instead, and says
|
|
1145
|
+
* so in GatewayWiped.scope.
|
|
1146
|
+
*
|
|
1147
|
+
* @generated from enum value: WIPE_SCOPE_FACTORY_RESET = 2;
|
|
1148
|
+
*/
|
|
1149
|
+
FACTORY_RESET = 2,
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
/**
|
|
1153
|
+
* Describes the enum kusinta.iot.signaling.v1.WipeScope.
|
|
1154
|
+
*/
|
|
1155
|
+
export declare const WipeScopeSchema: GenEnum<WipeScope>;
|
|
1156
|
+
|
|
1157
|
+
/**
|
|
1158
|
+
* Whether an outgoing staff member leaves the gateway or stays on it as a technician. Chosen
|
|
1159
|
+
* per person by the sending organisation's administrator who offered the transfer.
|
|
1160
|
+
*
|
|
1161
|
+
* @generated from enum kusinta.iot.signaling.v1.OutgoingStaffChoice
|
|
1162
|
+
*/
|
|
1163
|
+
export enum OutgoingStaffChoice {
|
|
1164
|
+
/**
|
|
1165
|
+
* No choice stated. Read as LEAVE, as is any value the gateway does not know.
|
|
1166
|
+
*
|
|
1167
|
+
* @generated from enum value: OUTGOING_STAFF_CHOICE_UNSPECIFIED = 0;
|
|
1168
|
+
*/
|
|
1169
|
+
UNSPECIFIED = 0,
|
|
1170
|
+
|
|
1171
|
+
/**
|
|
1172
|
+
* Leaves: every staff role and SERVICE membership goes, and no residency.
|
|
1173
|
+
*
|
|
1174
|
+
* @generated from enum value: OUTGOING_STAFF_CHOICE_LEAVE = 1;
|
|
1175
|
+
*/
|
|
1176
|
+
LEAVE = 1,
|
|
1177
|
+
|
|
1178
|
+
/**
|
|
1179
|
+
* Stays as a technician, with access_until as its end.
|
|
1180
|
+
*
|
|
1181
|
+
* @generated from enum value: OUTGOING_STAFF_CHOICE_STAY_AS_TECHNICIAN = 2;
|
|
1182
|
+
*/
|
|
1183
|
+
STAY_AS_TECHNICIAN = 2,
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1186
|
+
/**
|
|
1187
|
+
* Describes the enum kusinta.iot.signaling.v1.OutgoingStaffChoice.
|
|
1188
|
+
*/
|
|
1189
|
+
export declare const OutgoingStaffChoiceSchema: GenEnum<OutgoingStaffChoice>;
|
|
1190
|
+
|