@kusinta/iot-schema 0.2.0-beta.6 → 0.2.0-beta.60
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 +44 -29
- package/src/kusinta/iot/access/v1/acl_pb.d.ts +146 -2
- package/src/kusinta/iot/access/v1/acl_pb.js +19 -2
- package/src/kusinta/iot/access/v1/roles_pb.d.ts +160 -4
- package/src/kusinta/iot/access/v1/roles_pb.js +128 -5
- package/src/kusinta/iot/accountlink/v1/account_link_pb.d.ts +591 -0
- package/src/kusinta/iot/accountlink/v1/account_link_pb.js +160 -0
- package/src/kusinta/iot/climate/v1/climate_pb.d.ts +1695 -0
- package/src/kusinta/iot/climate/v1/climate_pb.js +292 -0
- package/src/kusinta/iot/commissioning/v1/commissioning_pb.d.ts +1642 -0
- package/src/kusinta/iot/commissioning/v1/commissioning_pb.js +339 -0
- package/src/kusinta/iot/common/v1/pairing_pb.d.ts +24 -4
- package/src/kusinta/iot/common/v1/pairing_pb.js +1 -1
- package/src/kusinta/iot/common/v1/types_pb.d.ts +235 -0
- package/src/kusinta/iot/common/v1/types_pb.js +84 -2
- package/src/kusinta/iot/connector/v1/connector_pb.d.ts +713 -3
- package/src/kusinta/iot/connector/v1/connector_pb.js +107 -16
- package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +213 -1
- package/src/kusinta/iot/device/v1/cluster_state_pb.js +37 -2
- package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +32 -4
- package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
- package/src/kusinta/iot/device/v1/device_event_pb.d.ts +89 -5
- package/src/kusinta/iot/device/v1/device_event_pb.js +1 -1
- package/src/kusinta/iot/device/v1/device_pb.d.ts +444 -11
- package/src/kusinta/iot/device/v1/device_pb.js +74 -2
- package/src/kusinta/iot/device/v1/properties_pb.d.ts +26 -5
- package/src/kusinta/iot/device/v1/properties_pb.js +1 -1
- package/src/kusinta/iot/device/v1/property_update_pb.d.ts +46 -2
- package/src/kusinta/iot/device/v1/property_update_pb.js +2 -1
- package/src/kusinta/iot/heating/v1/heating_pb.d.ts +659 -0
- package/src/kusinta/iot/heating/v1/heating_pb.js +119 -0
- 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/planning/v1/planning_pb.d.ts +199 -0
- package/src/kusinta/iot/planning/v1/planning_pb.js +48 -0
- package/src/kusinta/iot/planning/v1/planning_service_pb.d.ts +121 -0
- package/src/kusinta/iot/planning/v1/planning_service_pb.js +38 -0
- 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 +1263 -0
- package/src/kusinta/iot/reporting/v1/reporting_pb.js +238 -0
- package/src/kusinta/iot/reporting/v1/reporting_service_pb.d.ts +63 -0
- package/src/kusinta/iot/reporting/v1/reporting_service_pb.js +24 -0
- package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +939 -7
- package/src/kusinta/iot/signaling/v1/signaling_pb.js +163 -4
- 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 +218 -3
- package/src/kusinta/iot/space/v1/space_pb.js +25 -2
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +15 -0
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +1 -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 +5 -4
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +5 -4
- package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +48 -5
- package/src/kusinta/iot/webrtc/v1/app_token_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +56 -0
- package/src/kusinta/iot/webrtc/v1/command_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +179 -5
- package/src/kusinta/iot/webrtc/v1/device_state_pb.js +34 -5
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +603 -13
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +61 -4
- package/src/kusinta/iot/webrtc/v1/household_pb.d.ts +613 -0
- package/src/kusinta/iot/webrtc/v1/household_pb.js +134 -0
- package/src/kusinta/iot/webrtc/v1/invite_pb.d.ts +502 -0
- package/src/kusinta/iot/webrtc/v1/invite_pb.js +108 -0
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +2595 -75
- package/src/kusinta/iot/webrtc/v1/management_pb.js +382 -5
- package/src/kusinta/iot/webrtc/v1/members_pb.d.ts +582 -0
- package/src/kusinta/iot/webrtc/v1/members_pb.js +113 -0
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +66 -4
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +9 -1
|
@@ -7,11 +7,19 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
7
7
|
import type { ConnectorId, DeviceId, SpaceId } from "../../identity/v1/identity_pb.js";
|
|
8
8
|
import type { AttributeRef } from "../../access/v1/acl_pb.js";
|
|
9
9
|
import type { Space } from "../../space/v1/space_pb.js";
|
|
10
|
-
import type { ManagementAck, ManagementRequest, SpaceTree } from "./management_pb.js";
|
|
10
|
+
import type { BuildingPlanning, DayAheadPrices, ManagementAck, ManagementRequest, PrivacyDisclosure, SpaceAddress, SpaceTree } from "./management_pb.js";
|
|
11
|
+
import type { DeviceLink, DeviceLinkList } from "../../link/v1/link_pb.js";
|
|
12
|
+
import type { ApartmentClimateSummary, ClimateMode, PlantHistory, RoomClimate, RoomClimateList, RoomHistory } from "../../climate/v1/climate_pb.js";
|
|
13
|
+
import type { IssuedInvite, SpaceInvites } from "./invite_pb.js";
|
|
14
|
+
import type { GatewayMembers, PromotionRequests } from "./members_pb.js";
|
|
15
|
+
import type { HeatingLayout, HeatingRecord } from "../../heating/v1/heating_pb.js";
|
|
16
|
+
import type { AccountLinkNonce, AccountLinks } from "../../accountlink/v1/account_link_pb.js";
|
|
17
|
+
import type { CommissioningGrant, CommissioningGrants, CommissioningProfile, CommissioningRecord, CommissioningTest, HomeSetups } from "../../commissioning/v1/commissioning_pb.js";
|
|
18
|
+
import type { ClimateHistoryCleared, HouseholdExport, HouseholdHandover, HouseholdHandovers } from "./household_pb.js";
|
|
11
19
|
import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
|
|
12
|
-
import type { DeviceOwnershipType } from "../../common/v1/types_pb.js";
|
|
20
|
+
import type { BackendHealth, ConnectorKind, DeviceOwnershipType } from "../../common/v1/types_pb.js";
|
|
13
21
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
14
|
-
import type { DeviceAdded, DeviceRemoved, DeviceStateSnapshot, PropertyReport } from "./device_state_pb.js";
|
|
22
|
+
import type { DeviceAdded, DeviceRemoved, DeviceStateSnapshot, PropertyReport, ServiceStatusChanged } from "./device_state_pb.js";
|
|
15
23
|
import type { LivePermissionUpdate } from "./permission_push_pb.js";
|
|
16
24
|
import type { AttributeWriteRequest, CommandResult, DeviceCommand } from "./command_pb.js";
|
|
17
25
|
import type { DeviceEventBatch } from "../../device/v1/device_event_pb.js";
|
|
@@ -46,13 +54,26 @@ export declare type Pong = Message<"kusinta.iot.webrtc.v1.Pong"> & {
|
|
|
46
54
|
export declare const PongSchema: GenMessage<Pong>;
|
|
47
55
|
|
|
48
56
|
/**
|
|
57
|
+
* The gateway refused the session's handshake, gateway → app; the session ends.
|
|
58
|
+
*
|
|
49
59
|
* @generated from message kusinta.iot.webrtc.v1.HandshakeRejected
|
|
50
60
|
*/
|
|
51
61
|
export declare type HandshakeRejected = Message<"kusinta.iot.webrtc.v1.HandshakeRejected"> & {
|
|
52
62
|
/**
|
|
63
|
+
* For logs and debugging only, in the gateway's words. An app MUST NOT show it to a user: it
|
|
64
|
+
* names the refusal by code, in its user's language.
|
|
65
|
+
*
|
|
53
66
|
* @generated from field: string reason = 1;
|
|
54
67
|
*/
|
|
55
68
|
reason: string;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Why, as a closed list. Rollout note: a gateway that predates this field sends reason alone,
|
|
72
|
+
* which an app reads as UNSPECIFIED.
|
|
73
|
+
*
|
|
74
|
+
* @generated from field: kusinta.iot.webrtc.v1.HandshakeRejectReason code = 2;
|
|
75
|
+
*/
|
|
76
|
+
code: HandshakeRejectReason;
|
|
56
77
|
};
|
|
57
78
|
|
|
58
79
|
/**
|
|
@@ -318,6 +339,208 @@ export declare type ManagementResult = Message<"kusinta.iot.webrtc.v1.Management
|
|
|
318
339
|
*/
|
|
319
340
|
value: ManagementAck;
|
|
320
341
|
case: "ack";
|
|
342
|
+
} | {
|
|
343
|
+
/**
|
|
344
|
+
* list_device_links
|
|
345
|
+
*
|
|
346
|
+
* @generated from field: kusinta.iot.link.v1.DeviceLinkList links = 6;
|
|
347
|
+
*/
|
|
348
|
+
value: DeviceLinkList;
|
|
349
|
+
case: "links";
|
|
350
|
+
} | {
|
|
351
|
+
/**
|
|
352
|
+
* list_room_climates
|
|
353
|
+
*
|
|
354
|
+
* @generated from field: kusinta.iot.climate.v1.RoomClimateList room_climates = 7;
|
|
355
|
+
*/
|
|
356
|
+
value: RoomClimateList;
|
|
357
|
+
case: "roomClimates";
|
|
358
|
+
} | {
|
|
359
|
+
/**
|
|
360
|
+
* get_room_history
|
|
361
|
+
*
|
|
362
|
+
* @generated from field: kusinta.iot.climate.v1.RoomHistory room_history = 8;
|
|
363
|
+
*/
|
|
364
|
+
value: RoomHistory;
|
|
365
|
+
case: "roomHistory";
|
|
366
|
+
} | {
|
|
367
|
+
/**
|
|
368
|
+
* get_privacy_disclosure
|
|
369
|
+
*
|
|
370
|
+
* @generated from field: kusinta.iot.webrtc.v1.PrivacyDisclosure privacy_disclosure = 9;
|
|
371
|
+
*/
|
|
372
|
+
value: PrivacyDisclosure;
|
|
373
|
+
case: "privacyDisclosure";
|
|
374
|
+
} | {
|
|
375
|
+
/**
|
|
376
|
+
* get_apartment_climate_summary
|
|
377
|
+
*
|
|
378
|
+
* @generated from field: kusinta.iot.climate.v1.ApartmentClimateSummary apartment_climate_summary = 10;
|
|
379
|
+
*/
|
|
380
|
+
value: ApartmentClimateSummary;
|
|
381
|
+
case: "apartmentClimateSummary";
|
|
382
|
+
} | {
|
|
383
|
+
/**
|
|
384
|
+
* create_invite, resend_invite
|
|
385
|
+
*
|
|
386
|
+
* @generated from field: kusinta.iot.webrtc.v1.IssuedInvite issued_invite = 11;
|
|
387
|
+
*/
|
|
388
|
+
value: IssuedInvite;
|
|
389
|
+
case: "issuedInvite";
|
|
390
|
+
} | {
|
|
391
|
+
/**
|
|
392
|
+
* list_space_invites
|
|
393
|
+
*
|
|
394
|
+
* @generated from field: kusinta.iot.webrtc.v1.SpaceInvites space_invites = 12;
|
|
395
|
+
*/
|
|
396
|
+
value: SpaceInvites;
|
|
397
|
+
case: "spaceInvites";
|
|
398
|
+
} | {
|
|
399
|
+
/**
|
|
400
|
+
* list_gateway_members
|
|
401
|
+
*
|
|
402
|
+
* @generated from field: kusinta.iot.webrtc.v1.GatewayMembers gateway_members = 13;
|
|
403
|
+
*/
|
|
404
|
+
value: GatewayMembers;
|
|
405
|
+
case: "gatewayMembers";
|
|
406
|
+
} | {
|
|
407
|
+
/**
|
|
408
|
+
* list_promotion_requests
|
|
409
|
+
*
|
|
410
|
+
* @generated from field: kusinta.iot.webrtc.v1.PromotionRequests promotion_requests = 14;
|
|
411
|
+
*/
|
|
412
|
+
value: PromotionRequests;
|
|
413
|
+
case: "promotionRequests";
|
|
414
|
+
} | {
|
|
415
|
+
/**
|
|
416
|
+
* list_heating
|
|
417
|
+
*
|
|
418
|
+
* @generated from field: kusinta.iot.heating.v1.HeatingLayout heating_layout = 15;
|
|
419
|
+
*/
|
|
420
|
+
value: HeatingLayout;
|
|
421
|
+
case: "heatingLayout";
|
|
422
|
+
} | {
|
|
423
|
+
/**
|
|
424
|
+
* put_heating_plant, put_heating_circuit, put_floor_zone, put_comfort_load,
|
|
425
|
+
* set_comfort_windows
|
|
426
|
+
*
|
|
427
|
+
* @generated from field: kusinta.iot.heating.v1.HeatingRecord heating_record = 16;
|
|
428
|
+
*/
|
|
429
|
+
value: HeatingRecord;
|
|
430
|
+
case: "heatingRecord";
|
|
431
|
+
} | {
|
|
432
|
+
/**
|
|
433
|
+
* request_account_link_nonce
|
|
434
|
+
*
|
|
435
|
+
* @generated from field: kusinta.iot.accountlink.v1.AccountLinkNonce account_link_nonce = 17;
|
|
436
|
+
*/
|
|
437
|
+
value: AccountLinkNonce;
|
|
438
|
+
case: "accountLinkNonce";
|
|
439
|
+
} | {
|
|
440
|
+
/**
|
|
441
|
+
* list_account_links
|
|
442
|
+
*
|
|
443
|
+
* @generated from field: kusinta.iot.accountlink.v1.AccountLinks account_links = 18;
|
|
444
|
+
*/
|
|
445
|
+
value: AccountLinks;
|
|
446
|
+
case: "accountLinks";
|
|
447
|
+
} | {
|
|
448
|
+
/**
|
|
449
|
+
* list_commissioning
|
|
450
|
+
*
|
|
451
|
+
* @generated from field: kusinta.iot.commissioning.v1.CommissioningProfile commissioning_profile = 19;
|
|
452
|
+
*/
|
|
453
|
+
value: CommissioningProfile;
|
|
454
|
+
case: "commissioningProfile";
|
|
455
|
+
} | {
|
|
456
|
+
/**
|
|
457
|
+
* put_commissioning_fact, put_house_template, run_commissioning_test,
|
|
458
|
+
* conclude_commissioning_test
|
|
459
|
+
*
|
|
460
|
+
* @generated from field: kusinta.iot.commissioning.v1.CommissioningRecord commissioning_record = 20;
|
|
461
|
+
*/
|
|
462
|
+
value: CommissioningRecord;
|
|
463
|
+
case: "commissioningRecord";
|
|
464
|
+
} | {
|
|
465
|
+
/**
|
|
466
|
+
* list_home_setups
|
|
467
|
+
*
|
|
468
|
+
* @generated from field: kusinta.iot.commissioning.v1.HomeSetups home_setups = 21;
|
|
469
|
+
*/
|
|
470
|
+
value: HomeSetups;
|
|
471
|
+
case: "homeSetups";
|
|
472
|
+
} | {
|
|
473
|
+
/**
|
|
474
|
+
* request_commissioning_grant, answer_commissioning_grant (granted)
|
|
475
|
+
*
|
|
476
|
+
* @generated from field: kusinta.iot.commissioning.v1.CommissioningGrant commissioning_grant = 22;
|
|
477
|
+
*/
|
|
478
|
+
value: CommissioningGrant;
|
|
479
|
+
case: "commissioningGrant";
|
|
480
|
+
} | {
|
|
481
|
+
/**
|
|
482
|
+
* list_commissioning_grants
|
|
483
|
+
*
|
|
484
|
+
* @generated from field: kusinta.iot.commissioning.v1.CommissioningGrants commissioning_grants = 23;
|
|
485
|
+
*/
|
|
486
|
+
value: CommissioningGrants;
|
|
487
|
+
case: "commissioningGrants";
|
|
488
|
+
} | {
|
|
489
|
+
/**
|
|
490
|
+
* start_household_handover
|
|
491
|
+
*
|
|
492
|
+
* @generated from field: kusinta.iot.webrtc.v1.HouseholdHandover household_handover = 24;
|
|
493
|
+
*/
|
|
494
|
+
value: HouseholdHandover;
|
|
495
|
+
case: "householdHandover";
|
|
496
|
+
} | {
|
|
497
|
+
/**
|
|
498
|
+
* list_household_handovers
|
|
499
|
+
*
|
|
500
|
+
* @generated from field: kusinta.iot.webrtc.v1.HouseholdHandovers household_handovers = 25;
|
|
501
|
+
*/
|
|
502
|
+
value: HouseholdHandovers;
|
|
503
|
+
case: "householdHandovers";
|
|
504
|
+
} | {
|
|
505
|
+
/**
|
|
506
|
+
* export_household_data
|
|
507
|
+
*
|
|
508
|
+
* @generated from field: kusinta.iot.webrtc.v1.HouseholdExport household_export = 26;
|
|
509
|
+
*/
|
|
510
|
+
value: HouseholdExport;
|
|
511
|
+
case: "householdExport";
|
|
512
|
+
} | {
|
|
513
|
+
/**
|
|
514
|
+
* get_plant_history
|
|
515
|
+
*
|
|
516
|
+
* @generated from field: kusinta.iot.climate.v1.PlantHistory plant_history = 27;
|
|
517
|
+
*/
|
|
518
|
+
value: PlantHistory;
|
|
519
|
+
case: "plantHistory";
|
|
520
|
+
} | {
|
|
521
|
+
/**
|
|
522
|
+
* get_building_planning, put_building_planning
|
|
523
|
+
*
|
|
524
|
+
* @generated from field: kusinta.iot.webrtc.v1.BuildingPlanning building_planning = 28;
|
|
525
|
+
*/
|
|
526
|
+
value: BuildingPlanning;
|
|
527
|
+
case: "buildingPlanning";
|
|
528
|
+
} | {
|
|
529
|
+
/**
|
|
530
|
+
* get_day_ahead_prices
|
|
531
|
+
*
|
|
532
|
+
* @generated from field: kusinta.iot.webrtc.v1.DayAheadPrices day_ahead_prices = 29;
|
|
533
|
+
*/
|
|
534
|
+
value: DayAheadPrices;
|
|
535
|
+
case: "dayAheadPrices";
|
|
536
|
+
} | {
|
|
537
|
+
/**
|
|
538
|
+
* get_space_address, put_space_address
|
|
539
|
+
*
|
|
540
|
+
* @generated from field: kusinta.iot.webrtc.v1.SpaceAddress space_address = 30;
|
|
541
|
+
*/
|
|
542
|
+
value: SpaceAddress;
|
|
543
|
+
case: "spaceAddress";
|
|
321
544
|
} | { case: undefined; value?: undefined };
|
|
322
545
|
};
|
|
323
546
|
|
|
@@ -333,8 +556,9 @@ export declare const ManagementResultSchema: GenMessage<ManagementResult>;
|
|
|
333
556
|
*
|
|
334
557
|
* A payload case of its own rather than a ManagementRequest. Those are gated on a target —
|
|
335
558
|
* a space, a device — and that is the justification for keeping them behind one wrapper.
|
|
336
|
-
*
|
|
337
|
-
*
|
|
559
|
+
* A connector is not a target the caller must reach the way a space is, so this is
|
|
560
|
+
* authorized against the caller's role and nothing else — but it must still name the
|
|
561
|
+
* connector to open (see connector_id), never every connector at once.
|
|
338
562
|
*
|
|
339
563
|
* Answered twice, and the two answers say different things at different times.
|
|
340
564
|
* PairingStarted reports whether the window opened; PairingFinished reports what came of
|
|
@@ -345,13 +569,13 @@ export declare const ManagementResultSchema: GenMessage<ManagementResult>;
|
|
|
345
569
|
*/
|
|
346
570
|
export declare type StartPairing = Message<"kusinta.iot.webrtc.v1.StartPairing"> & {
|
|
347
571
|
/**
|
|
348
|
-
* Which connector to open.
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
572
|
+
* Which connector to open. Required: pairing always targets exactly one connector,
|
|
573
|
+
* picked from the connector enumeration (see ConnectorsAnnounced and
|
|
574
|
+
* ConnectorInfo.supports_pairing). An untargeted request is refused with
|
|
575
|
+
* PairingError.CONNECTOR_REQUIRED, never fanned out across every hub — so that no
|
|
576
|
+
* client can open every radio at once, and so a device is paired onto the specific hub
|
|
577
|
+
* that will broker its links. The field is a message, so proto cannot mark it required;
|
|
578
|
+
* the gateway enforces it.
|
|
355
579
|
*
|
|
356
580
|
* @generated from field: kusinta.iot.identity.v1.ConnectorId connector_id = 1;
|
|
357
581
|
*/
|
|
@@ -365,7 +589,8 @@ export declare type StartPairing = Message<"kusinta.iot.webrtc.v1.StartPairing">
|
|
|
365
589
|
window?: PairingWindow | undefined;
|
|
366
590
|
|
|
367
591
|
/**
|
|
368
|
-
* Where to file the device once it arrives.
|
|
592
|
+
* Where to file the device once it arrives. Into a home only as PlaceDeviceInSpace
|
|
593
|
+
* allows.
|
|
369
594
|
*
|
|
370
595
|
* Optional, and the two cases differ. A caller pairing a device of their own must name a
|
|
371
596
|
* space they reach, so it is theirs and placed on arrival rather than sitting unfiled and
|
|
@@ -480,7 +705,230 @@ export declare const PairingFinishedSchema: GenMessage<PairingFinished>;
|
|
|
480
705
|
|
|
481
706
|
/**
|
|
482
707
|
* GatewayMessage: gateway → app
|
|
708
|
+
* A link between two devices has changed, gateway to app.
|
|
709
|
+
*
|
|
710
|
+
* Sent without being asked for, like device_added, and for the same reason: a link's
|
|
711
|
+
* state is not settled when it is made. A hub accepting a link is not the two devices
|
|
712
|
+
* honouring it, and a link that was carrying stops when its sender goes quiet — so the
|
|
713
|
+
* interesting transitions all happen long after the request that created it was
|
|
714
|
+
* answered. Without this an app can only learn by listing every link again and
|
|
715
|
+
* diffing, which means a room that has quietly stopped following its wall thermostat
|
|
716
|
+
* looks correct until somebody reloads.
|
|
717
|
+
*
|
|
718
|
+
* Apply as an upsert keyed on link.link_id, never as an insert: the same link is sent
|
|
719
|
+
* again whenever its state moves.
|
|
720
|
+
*
|
|
721
|
+
* Sent only for links the recipient is entitled to see. An unfiltered one would say
|
|
722
|
+
* which devices exist and how they are arranged, to somebody entitled to neither. A link
|
|
723
|
+
* with an end in a home reaches a recipient who sees it as service with details_withheld,
|
|
724
|
+
* and is pushed to them only when it appears and when it is removed — never for anything
|
|
725
|
+
* else, its state and settings included, which are not theirs to see. Its removal is pushed
|
|
726
|
+
* to them at once, as every loss is — to those who were shown it, and to nobody else.
|
|
727
|
+
*
|
|
728
|
+
* @generated from message kusinta.iot.webrtc.v1.LinkChanged
|
|
729
|
+
*/
|
|
730
|
+
export declare type LinkChanged = Message<"kusinta.iot.webrtc.v1.LinkChanged"> & {
|
|
731
|
+
/**
|
|
732
|
+
* @generated from field: kusinta.iot.link.v1.DeviceLink link = 1;
|
|
733
|
+
*/
|
|
734
|
+
link?: DeviceLink | undefined;
|
|
735
|
+
|
|
736
|
+
/**
|
|
737
|
+
* The link is gone, rather than merely not carrying. Distinct from a BROKEN state
|
|
738
|
+
* because the two need opposite responses: a removal is finished business, while a
|
|
739
|
+
* link that has stopped carrying is a fault worth showing somebody. Announcing a
|
|
740
|
+
* deletion as BROKEN would leave every removed link looking like something to go
|
|
741
|
+
* and repair.
|
|
742
|
+
*
|
|
743
|
+
* `link` still carries the whole link when this is set, so the app can name what
|
|
744
|
+
* went rather than only its id — as much of it as the recipient was shown, so with
|
|
745
|
+
* details_withheld to one who saw it as service. To such a recipient it means the link is
|
|
746
|
+
* gone from their view, which need not mean it is gone.
|
|
747
|
+
*
|
|
748
|
+
* @generated from field: bool removed = 2;
|
|
749
|
+
*/
|
|
750
|
+
removed: boolean;
|
|
751
|
+
};
|
|
752
|
+
|
|
753
|
+
/**
|
|
754
|
+
* Describes the message kusinta.iot.webrtc.v1.LinkChanged.
|
|
755
|
+
* Use `create(LinkChangedSchema)` to create a new message.
|
|
756
|
+
*/
|
|
757
|
+
export declare const LinkChangedSchema: GenMessage<LinkChanged>;
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* One connected connector, described for the app, gateway → app.
|
|
483
761
|
*
|
|
762
|
+
* Deliberately not connector.v1.ConnectorInfo: that carries transport and endpoint,
|
|
763
|
+
* which are the gateway↔connector wiring and no business of the app. This is the
|
|
764
|
+
* app-facing projection — who the connector is and what it can do — and nothing
|
|
765
|
+
* about how the gateway reaches it.
|
|
766
|
+
*
|
|
767
|
+
* @generated from message kusinta.iot.webrtc.v1.ConnectorDescriptor
|
|
768
|
+
*/
|
|
769
|
+
export declare type ConnectorDescriptor = Message<"kusinta.iot.webrtc.v1.ConnectorDescriptor"> & {
|
|
770
|
+
/**
|
|
771
|
+
* The routing key. Stable and unique; what StartPairing.connector_id and
|
|
772
|
+
* ProvisionDevice.connector_id name.
|
|
773
|
+
*
|
|
774
|
+
* @generated from field: kusinta.iot.identity.v1.ConnectorId connector_id = 1;
|
|
775
|
+
*/
|
|
776
|
+
connectorId?: ConnectorId | undefined;
|
|
777
|
+
|
|
778
|
+
/**
|
|
779
|
+
* User-facing label, free-form, never matched on.
|
|
780
|
+
*
|
|
781
|
+
* @generated from field: string display_name = 2;
|
|
782
|
+
*/
|
|
783
|
+
displayName: string;
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* @generated from field: repeated uint32 supported_device_type_ids = 3;
|
|
787
|
+
*/
|
|
788
|
+
supportedDeviceTypeIds: number[];
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* The capabilities the app branches on. Copied from the connector's handshake;
|
|
792
|
+
* see ConnectorInfo for what each means. The app decides pairing-vs-provisioning
|
|
793
|
+
* and whether to offer hard links from these, never from kind.
|
|
794
|
+
*
|
|
795
|
+
* @generated from field: bool supports_pairing = 4;
|
|
796
|
+
*/
|
|
797
|
+
supportsPairing: boolean;
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* @generated from field: bool supports_provisioning = 5;
|
|
801
|
+
*/
|
|
802
|
+
supportsProvisioning: boolean;
|
|
803
|
+
|
|
804
|
+
/**
|
|
805
|
+
* @generated from field: bool brokers_links = 6;
|
|
806
|
+
*/
|
|
807
|
+
brokersLinks: boolean;
|
|
808
|
+
|
|
809
|
+
/**
|
|
810
|
+
* Presentation only — an icon or an "unknown hub" fallback; see
|
|
811
|
+
* common.v1.ConnectorKind. Unset renders as a generic hub.
|
|
812
|
+
*
|
|
813
|
+
* @generated from field: kusinta.iot.common.v1.ConnectorKind kind = 7;
|
|
814
|
+
*/
|
|
815
|
+
kind: ConnectorKind;
|
|
816
|
+
|
|
817
|
+
/**
|
|
818
|
+
* Installer or operator detail, free-form, for a person.
|
|
819
|
+
*
|
|
820
|
+
* @generated from field: string description = 8;
|
|
821
|
+
*/
|
|
822
|
+
description: string;
|
|
823
|
+
|
|
824
|
+
/**
|
|
825
|
+
* Whether the backend the connector drives is working, as the connector last reported it
|
|
826
|
+
* (see connector.v1.BackendHealthReport): state and category only — the connector's own
|
|
827
|
+
* detail stays in the gateway's logs. Unset when the connector has stated nothing, which
|
|
828
|
+
* reads as OK. FAILING is what opens a reporting.v1.PROBLEM_KIND_CONNECTOR_ERROR, and
|
|
829
|
+
* while it holds the app may offer ReconnectConnector.
|
|
830
|
+
*
|
|
831
|
+
* @generated from field: kusinta.iot.common.v1.BackendHealth backend_health = 9;
|
|
832
|
+
*/
|
|
833
|
+
backendHealth?: BackendHealth | undefined;
|
|
834
|
+
|
|
835
|
+
/**
|
|
836
|
+
* The connector can re-initialise its backend on request: ReconnectConnector is
|
|
837
|
+
* refused for any connector without it. Copied from the handshake, as the other
|
|
838
|
+
* capabilities are.
|
|
839
|
+
*
|
|
840
|
+
* @generated from field: bool supports_backend_reinitialize = 10;
|
|
841
|
+
*/
|
|
842
|
+
supportsBackendReinitialize: boolean;
|
|
843
|
+
};
|
|
844
|
+
|
|
845
|
+
/**
|
|
846
|
+
* Describes the message kusinta.iot.webrtc.v1.ConnectorDescriptor.
|
|
847
|
+
* Use `create(ConnectorDescriptorSchema)` to create a new message.
|
|
848
|
+
*/
|
|
849
|
+
export declare const ConnectorDescriptorSchema: GenMessage<ConnectorDescriptor>;
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* The connectors the gateway currently holds, gateway → app: those connected now. A
|
|
853
|
+
* connector whose stream drops leaves the list, and its backend health with it; it is
|
|
854
|
+
* listed again when it reconnects. The app offers ReconnectConnector only for a listed
|
|
855
|
+
* connector.
|
|
856
|
+
*
|
|
857
|
+
* A push, not a ManagementResult arm: a new result-oneof member is a compile error
|
|
858
|
+
* in a consumer whose match on the result is exhaustive, whereas a new push case is
|
|
859
|
+
* absorbed by that switch's default. Sent on connect and whenever the set changes —
|
|
860
|
+
* a connector arriving, leaving, revising its capabilities, or its backend health
|
|
861
|
+
* changing — and replaces the app's whole picture each time rather than being a delta,
|
|
862
|
+
* so a client that missed one re-syncs from the next.
|
|
863
|
+
*
|
|
864
|
+
* @generated from message kusinta.iot.webrtc.v1.ConnectorsAnnounced
|
|
865
|
+
*/
|
|
866
|
+
export declare type ConnectorsAnnounced = Message<"kusinta.iot.webrtc.v1.ConnectorsAnnounced"> & {
|
|
867
|
+
/**
|
|
868
|
+
* @generated from field: repeated kusinta.iot.webrtc.v1.ConnectorDescriptor connectors = 1;
|
|
869
|
+
*/
|
|
870
|
+
connectors: ConnectorDescriptor[];
|
|
871
|
+
};
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Describes the message kusinta.iot.webrtc.v1.ConnectorsAnnounced.
|
|
875
|
+
* Use `create(ConnectorsAnnouncedSchema)` to create a new message.
|
|
876
|
+
*/
|
|
877
|
+
export declare const ConnectorsAnnouncedSchema: GenMessage<ConnectorsAnnounced>;
|
|
878
|
+
|
|
879
|
+
/**
|
|
880
|
+
* A room's climate changed, gateway → app: its target, what set it, what it is being
|
|
881
|
+
* held at, its condition. Apply as an upsert keyed on room.space_id. Sent only for rooms
|
|
882
|
+
* the recipient may see, and whenever any field the recipient is sent moves — a knob
|
|
883
|
+
* turned by hand shows up here without the app asking. To a recipient who sees the room
|
|
884
|
+
* as service, what is new is sent as it happens and what is lost at once. A recipient who
|
|
885
|
+
* is sent the room with state_withheld is therefore not sent it when only withheld fields
|
|
886
|
+
* move.
|
|
887
|
+
*
|
|
888
|
+
* @generated from message kusinta.iot.webrtc.v1.RoomClimateChanged
|
|
889
|
+
*/
|
|
890
|
+
export declare type RoomClimateChanged = Message<"kusinta.iot.webrtc.v1.RoomClimateChanged"> & {
|
|
891
|
+
/**
|
|
892
|
+
* @generated from field: kusinta.iot.climate.v1.RoomClimate room = 1;
|
|
893
|
+
*/
|
|
894
|
+
room?: RoomClimate | undefined;
|
|
895
|
+
};
|
|
896
|
+
|
|
897
|
+
/**
|
|
898
|
+
* Describes the message kusinta.iot.webrtc.v1.RoomClimateChanged.
|
|
899
|
+
* Use `create(RoomClimateChangedSchema)` to create a new message.
|
|
900
|
+
*/
|
|
901
|
+
export declare const RoomClimateChangedSchema: GenMessage<RoomClimateChanged>;
|
|
902
|
+
|
|
903
|
+
/**
|
|
904
|
+
* A mode on a space was switched on, changed or ended, gateway → app. `ended` rather than
|
|
905
|
+
* kind UNSPECIFIED, so an app can still name the mode that finished. A mode on an
|
|
906
|
+
* apartment or a room in one is sent to its residents only — whether a home stands empty
|
|
907
|
+
* is theirs to know — and, while the home is empty, to the property owner and the gateway
|
|
908
|
+
* administrators who reach it (household.proto, EMPTY HOME), who are sent its end at MOVE-IN;
|
|
909
|
+
* one on any other space, to whoever reaches it.
|
|
910
|
+
*
|
|
911
|
+
* @generated from message kusinta.iot.webrtc.v1.ClimateModeChanged
|
|
912
|
+
*/
|
|
913
|
+
export declare type ClimateModeChanged = Message<"kusinta.iot.webrtc.v1.ClimateModeChanged"> & {
|
|
914
|
+
/**
|
|
915
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateMode mode = 1;
|
|
916
|
+
*/
|
|
917
|
+
mode?: ClimateMode | undefined;
|
|
918
|
+
|
|
919
|
+
/**
|
|
920
|
+
* @generated from field: bool ended = 2;
|
|
921
|
+
*/
|
|
922
|
+
ended: boolean;
|
|
923
|
+
};
|
|
924
|
+
|
|
925
|
+
/**
|
|
926
|
+
* Describes the message kusinta.iot.webrtc.v1.ClimateModeChanged.
|
|
927
|
+
* Use `create(ClimateModeChangedSchema)` to create a new message.
|
|
928
|
+
*/
|
|
929
|
+
export declare const ClimateModeChangedSchema: GenMessage<ClimateModeChanged>;
|
|
930
|
+
|
|
931
|
+
/**
|
|
484
932
|
* @generated from message kusinta.iot.webrtc.v1.GatewayMessage
|
|
485
933
|
*/
|
|
486
934
|
export declare type GatewayMessage = Message<"kusinta.iot.webrtc.v1.GatewayMessage"> & {
|
|
@@ -586,6 +1034,86 @@ export declare type GatewayMessage = Message<"kusinta.iot.webrtc.v1.GatewayMessa
|
|
|
586
1034
|
*/
|
|
587
1035
|
value: PairingFinished;
|
|
588
1036
|
case: "pairingFinished";
|
|
1037
|
+
} | {
|
|
1038
|
+
/**
|
|
1039
|
+
* @generated from field: kusinta.iot.webrtc.v1.LinkChanged link_changed = 19;
|
|
1040
|
+
*/
|
|
1041
|
+
value: LinkChanged;
|
|
1042
|
+
case: "linkChanged";
|
|
1043
|
+
} | {
|
|
1044
|
+
/**
|
|
1045
|
+
* @generated from field: kusinta.iot.webrtc.v1.ConnectorsAnnounced connectors_announced = 20;
|
|
1046
|
+
*/
|
|
1047
|
+
value: ConnectorsAnnounced;
|
|
1048
|
+
case: "connectorsAnnounced";
|
|
1049
|
+
} | {
|
|
1050
|
+
/**
|
|
1051
|
+
* @generated from field: kusinta.iot.webrtc.v1.RoomClimateChanged room_climate_changed = 21;
|
|
1052
|
+
*/
|
|
1053
|
+
value: RoomClimateChanged;
|
|
1054
|
+
case: "roomClimateChanged";
|
|
1055
|
+
} | {
|
|
1056
|
+
/**
|
|
1057
|
+
* @generated from field: kusinta.iot.webrtc.v1.ClimateModeChanged climate_mode_changed = 22;
|
|
1058
|
+
*/
|
|
1059
|
+
value: ClimateModeChanged;
|
|
1060
|
+
case: "climateModeChanged";
|
|
1061
|
+
} | {
|
|
1062
|
+
/**
|
|
1063
|
+
* @generated from field: kusinta.iot.webrtc.v1.ServiceStatusChanged service_status_changed = 23;
|
|
1064
|
+
*/
|
|
1065
|
+
value: ServiceStatusChanged;
|
|
1066
|
+
case: "serviceStatusChanged";
|
|
1067
|
+
} | {
|
|
1068
|
+
/**
|
|
1069
|
+
* A space's pending invites and join requests changed; see SpaceInvites.
|
|
1070
|
+
*
|
|
1071
|
+
* @generated from field: kusinta.iot.webrtc.v1.SpaceInvites space_invites = 24;
|
|
1072
|
+
*/
|
|
1073
|
+
value: SpaceInvites;
|
|
1074
|
+
case: "spaceInvites";
|
|
1075
|
+
} | {
|
|
1076
|
+
/**
|
|
1077
|
+
* The promotion requests the session's user made or was asked to accept changed; see
|
|
1078
|
+
* PromotionRequests.
|
|
1079
|
+
*
|
|
1080
|
+
* @generated from field: kusinta.iot.webrtc.v1.PromotionRequests promotion_requests = 25;
|
|
1081
|
+
*/
|
|
1082
|
+
value: PromotionRequests;
|
|
1083
|
+
case: "promotionRequests";
|
|
1084
|
+
} | {
|
|
1085
|
+
/**
|
|
1086
|
+
* A commissioning test changed state: to every session whose user is given it
|
|
1087
|
+
* (commissioning.v1), save its start to the session that started it.
|
|
1088
|
+
*
|
|
1089
|
+
* @generated from field: kusinta.iot.commissioning.v1.CommissioningTest commissioning_test = 26;
|
|
1090
|
+
*/
|
|
1091
|
+
value: CommissioningTest;
|
|
1092
|
+
case: "commissioningTest";
|
|
1093
|
+
} | {
|
|
1094
|
+
/**
|
|
1095
|
+
* The commissioning grants on a space changed; see commissioning.v1.CommissioningGrants.
|
|
1096
|
+
*
|
|
1097
|
+
* @generated from field: kusinta.iot.commissioning.v1.CommissioningGrants commissioning_grants = 27;
|
|
1098
|
+
*/
|
|
1099
|
+
value: CommissioningGrants;
|
|
1100
|
+
case: "commissioningGrants";
|
|
1101
|
+
} | {
|
|
1102
|
+
/**
|
|
1103
|
+
* A home's handover was started, cancelled or done; see HouseholdHandover.
|
|
1104
|
+
*
|
|
1105
|
+
* @generated from field: kusinta.iot.webrtc.v1.HouseholdHandover household_handover = 28;
|
|
1106
|
+
*/
|
|
1107
|
+
value: HouseholdHandover;
|
|
1108
|
+
case: "householdHandover";
|
|
1109
|
+
} | {
|
|
1110
|
+
/**
|
|
1111
|
+
* A home's climate history was cleared; see ClimateHistoryCleared.
|
|
1112
|
+
*
|
|
1113
|
+
* @generated from field: kusinta.iot.webrtc.v1.ClimateHistoryCleared climate_history_cleared = 29;
|
|
1114
|
+
*/
|
|
1115
|
+
value: ClimateHistoryCleared;
|
|
1116
|
+
case: "climateHistoryCleared";
|
|
589
1117
|
} | { case: undefined; value?: undefined };
|
|
590
1118
|
};
|
|
591
1119
|
|
|
@@ -677,6 +1205,51 @@ export declare type AppMessage = Message<"kusinta.iot.webrtc.v1.AppMessage"> & {
|
|
|
677
1205
|
*/
|
|
678
1206
|
export declare const AppMessageSchema: GenMessage<AppMessage>;
|
|
679
1207
|
|
|
1208
|
+
/**
|
|
1209
|
+
* Why a handshake was refused (HandshakeRejected.code).
|
|
1210
|
+
*
|
|
1211
|
+
* @generated from enum kusinta.iot.webrtc.v1.HandshakeRejectReason
|
|
1212
|
+
*/
|
|
1213
|
+
export enum HandshakeRejectReason {
|
|
1214
|
+
/**
|
|
1215
|
+
* Not stated, or a value this app's schema does not know: an app says that the gateway
|
|
1216
|
+
* refused the connection, and no more. It treats the refusal as a passing failure, and
|
|
1217
|
+
* retries under its ordinary backoff.
|
|
1218
|
+
*
|
|
1219
|
+
* @generated from enum value: HANDSHAKE_REJECT_REASON_UNSPECIFIED = 0;
|
|
1220
|
+
*/
|
|
1221
|
+
UNSPECIFIED = 0,
|
|
1222
|
+
|
|
1223
|
+
/**
|
|
1224
|
+
* A message the gateway could not decode. A fault of the app's: retrying repeats it, so an
|
|
1225
|
+
* app MUST NOT retry in a loop.
|
|
1226
|
+
*
|
|
1227
|
+
* @generated from enum value: HANDSHAKE_REJECT_REASON_INVALID_ENCODING = 1;
|
|
1228
|
+
*/
|
|
1229
|
+
INVALID_ENCODING = 1,
|
|
1230
|
+
|
|
1231
|
+
/**
|
|
1232
|
+
* A message before AppHandshake, which must come first. A fault of the app's, as
|
|
1233
|
+
* INVALID_ENCODING is: an app MUST NOT retry in a loop.
|
|
1234
|
+
*
|
|
1235
|
+
* @generated from enum value: HANDSHAKE_REJECT_REASON_HANDSHAKE_REQUIRED = 2;
|
|
1236
|
+
*/
|
|
1237
|
+
HANDSHAKE_REQUIRED = 2,
|
|
1238
|
+
|
|
1239
|
+
/**
|
|
1240
|
+
* The token in AppHandshake was not accepted (AppTokenClaims). A fresh token can help: an
|
|
1241
|
+
* app may refresh it and retry once, and then stops and tells its user.
|
|
1242
|
+
*
|
|
1243
|
+
* @generated from enum value: HANDSHAKE_REJECT_REASON_AUTHENTICATION_FAILED = 3;
|
|
1244
|
+
*/
|
|
1245
|
+
AUTHENTICATION_FAILED = 3,
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
/**
|
|
1249
|
+
* Describes the enum kusinta.iot.webrtc.v1.HandshakeRejectReason.
|
|
1250
|
+
*/
|
|
1251
|
+
export declare const HandshakeRejectReasonSchema: GenEnum<HandshakeRejectReason>;
|
|
1252
|
+
|
|
680
1253
|
/**
|
|
681
1254
|
* Machine-readable classification of a session-level gateway error, so the app
|
|
682
1255
|
* can branch without string-matching a human sentence. Deliberately an enum here,
|
|
@@ -741,6 +1314,23 @@ export enum GatewayErrorCode {
|
|
|
741
1314
|
* @generated from enum value: GATEWAY_ERROR_CODE_SESSION_LIMIT_REACHED = 5;
|
|
742
1315
|
*/
|
|
743
1316
|
SESSION_LIMIT_REACHED = 5,
|
|
1317
|
+
|
|
1318
|
+
/**
|
|
1319
|
+
* The request was well formed and the caller may make it, but it will not succeed without
|
|
1320
|
+
* a change on the receiving side — a capability the target lacks, configuration only a
|
|
1321
|
+
* person can fix. Do not retry as is. Distinct from INVALID_REQUEST, which is the app's
|
|
1322
|
+
* bug, and from UNAVAILABLE, which clears on its own. GatewayError.metadata says which
|
|
1323
|
+
* precondition failed where the operation documents one. Sent only in answer to a request
|
|
1324
|
+
* whose operation documents it, never as a session-level error that refuses or ends a
|
|
1325
|
+
* session.
|
|
1326
|
+
*
|
|
1327
|
+
* Rollout note: a client whose schema predates this value decodes it as UNSPECIFIED,
|
|
1328
|
+
* which is retryable by design, so it may offer a retry that fails the same way again.
|
|
1329
|
+
* Harmless, but client handling should ship before or with the gateway that emits it.
|
|
1330
|
+
*
|
|
1331
|
+
* @generated from enum value: GATEWAY_ERROR_CODE_FAILED_PRECONDITION = 6;
|
|
1332
|
+
*/
|
|
1333
|
+
FAILED_PRECONDITION = 6,
|
|
744
1334
|
}
|
|
745
1335
|
|
|
746
1336
|
/**
|