@kusinta/iot-schema 0.2.0-beta.46 → 0.2.0-beta.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/package.json +1 -1
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +17 -3
  3. package/src/kusinta/iot/access/v1/acl_pb.js +3 -3
  4. package/src/kusinta/iot/access/v1/roles_pb.d.ts +3 -1
  5. package/src/kusinta/iot/access/v1/roles_pb.js +3 -1
  6. package/src/kusinta/iot/accountlink/v1/account_link_pb.d.ts +10 -2
  7. package/src/kusinta/iot/climate/v1/climate_pb.d.ts +380 -24
  8. package/src/kusinta/iot/climate/v1/climate_pb.js +72 -15
  9. package/src/kusinta/iot/commissioning/v1/commissioning_pb.d.ts +21 -5
  10. package/src/kusinta/iot/commissioning/v1/commissioning_pb.js +1 -1
  11. package/src/kusinta/iot/common/v1/types_pb.d.ts +3 -0
  12. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +3 -3
  13. package/src/kusinta/iot/device/v1/device_pb.d.ts +267 -5
  14. package/src/kusinta/iot/device/v1/device_pb.js +44 -3
  15. package/src/kusinta/iot/device/v1/property_update_pb.d.ts +15 -1
  16. package/src/kusinta/iot/device/v1/property_update_pb.js +1 -1
  17. package/src/kusinta/iot/heating/v1/heating_pb.d.ts +39 -5
  18. package/src/kusinta/iot/heating/v1/heating_pb.js +2 -1
  19. package/src/kusinta/iot/reporting/v1/reporting_pb.d.ts +28 -5
  20. package/src/kusinta/iot/reporting/v1/reporting_pb.js +4 -4
  21. package/src/kusinta/iot/space/v1/space_pb.d.ts +18 -1
  22. package/src/kusinta/iot/space/v1/space_pb.js +1 -1
  23. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +5 -4
  24. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +5 -4
  25. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +61 -1
  26. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +16 -2
  27. package/src/kusinta/iot/webrtc/v1/household_pb.d.ts +30 -7
  28. package/src/kusinta/iot/webrtc/v1/household_pb.js +1 -1
  29. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +162 -39
  30. package/src/kusinta/iot/webrtc/v1/management_pb.js +48 -34
  31. package/src/kusinta/iot/webrtc/v1/members_pb.d.ts +4 -0
@@ -241,8 +241,8 @@ export declare type HouseholdHandover = Message<"kusinta.iot.webrtc.v1.Household
241
241
  * one completes on its own: 7 days after started_at, and never sooner than 7 days after the
242
242
  * home's last residency ended. On a handover that is not vacated, a residency that starts
243
243
  * while it is pending moves it to 7 days after that, and the handover is pushed again, so
244
- * that a household that moves in during it has its notice too; on a vacated one nobody new
245
- * moves in (VACANCY).
244
+ * that a household that moves in during it has its notice too; on a vacated one, a new
245
+ * household moving in completes it instead (QUICK TURNOVER).
246
246
  *
247
247
  * @generated from field: google.protobuf.Timestamp staff_confirmable_from = 8;
248
248
  */
@@ -283,6 +283,27 @@ export declare type HouseholdHandover = Message<"kusinta.iot.webrtc.v1.Household
283
283
  * @generated from field: bool recipient_household_admin = 12;
284
284
  */
285
285
  recipientHouseholdAdmin: boolean;
286
+
287
+ /**
288
+ * Set whenever a handover is or becomes vacated, from the push that tells it so — one started
289
+ * vacated, or a pending one the last residency ending makes vacated (VACANCY): a new resident
290
+ * filed by staff may end it early, no sooner than 24 hours after the last residency ended
291
+ * (QUICK TURNOVER), so the departing household's export window runs until
292
+ * staff_confirmable_from or until then, whichever is first. An app says so
293
+ * from this field rather than from vacated, so that a handover from a gateway that predates
294
+ * it, which ends no notice early, is not misdescribed.
295
+ *
296
+ * @generated from field: bool may_end_on_move_in = 13;
297
+ */
298
+ mayEndOnMoveIn: boolean;
299
+
300
+ /**
301
+ * Set on a vacated handover done early because the property owner or a gateway administrator
302
+ * filed a new resident (QUICK TURNOVER); ended_at says when. Unset on every other.
303
+ *
304
+ * @generated from field: bool ended_by_move_in = 14;
305
+ */
306
+ endedByMoveIn: boolean;
286
307
  };
287
308
 
288
309
  /**
@@ -339,8 +360,10 @@ export declare const ClearClimateHistorySchema: GenMessage<ClearClimateHistory>;
339
360
  * arrival every room history, climate summary and device event of the home it holds from before
340
361
  * cleared_at, rather than keeping what the gateway no longer does, and keeps cleared_at as a
341
362
  * lasting floor for the home: a sample, period or event dated before it that arrives later — an
342
- * answer already in flight at the clear — is dropped on arrival too. Nobody else is told:
343
- * whoever is given the apartment's summary as service learns of it by reading it.
363
+ * answer already in flight at the clear — is dropped on arrival too. The push is the live
364
+ * signal; a session that was not up for it reads the same floor from the apartment
365
+ * (space.v1.Space.climate_history_cleared_at). Nobody else is told: whoever is given the
366
+ * apartment's summary as service learns of it by reading it.
344
367
  *
345
368
  * @generated from message kusinta.iot.webrtc.v1.ClimateHistoryCleared
346
369
  */
@@ -573,9 +596,9 @@ export enum HouseholdHandoverState {
573
596
  CANCELLED = 2,
574
597
 
575
598
  /**
576
- * Confirmed, or, for a vacated one, its notice passed with nobody living in the home; the wipe
577
- * has run. The last residency ending while one is pending makes it vacated, not done
578
- * (VACANCY).
599
+ * Confirmed, or, for a vacated one, its notice passed with nobody living in the home or a new
600
+ * resident filed (QUICK TURNOVER); the wipe has run. The last residency ending while one is
601
+ * pending makes it vacated, not done (VACANCY).
579
602
  *
580
603
  * @generated from enum value: HOUSEHOLD_HANDOVER_STATE_DONE = 3;
581
604
  */
@@ -13,7 +13,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
13
13
  * Describes the file kusinta/iot/webrtc/v1/household.proto.
14
14
  */
15
15
  export const file_kusinta_iot_webrtc_v1_household = /*@__PURE__*/
16
- fileDesc("CiVrdXNpbnRhL2lvdC93ZWJydGMvdjEvaG91c2Vob2xkLnByb3RvEhVrdXNpbnRhLmlvdC53ZWJydGMudjEiewoURGVtb3RlSG91c2Vob2xkQWRtaW4SMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMAoHdXNlcl9pZBgCIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZCL7AQoQU3RhZmZBcHBvaW50bWVudBIyCglhcHBvaW50ZWUYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNQoMYXBwb2ludGVkX2J5GAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEhkKEWFwcG9pbnRlZF9ieV9uYW1lGAMgASgJEiYKAmF0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5CgRraW5kGAUgASgOMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YWZmQXBwb2ludG1lbnRLaW5kIksKFlN0YXJ0SG91c2Vob2xkSGFuZG92ZXISMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiLwoYQ29uZmlybUhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJIi4KF0NhbmNlbEhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJIlEKFkxpc3RIb3VzZWhvbGRIYW5kb3ZlcnMSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi7wMKEUhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJEjEKB2hvbWVfaWQYAiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKBXN0YXRlGAMgASgOMi0ua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyU3RhdGUSMwoKc3RhcnRlZF9ieRgEIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBIXCg9zdGFydGVkX2J5X25hbWUYBSABKAkSGAoQc3RhcnRlZF9ieV9zdGFmZhgGIAEoCBIuCgpzdGFydGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6ChZzdGFmZl9jb25maXJtYWJsZV9mcm9tGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmFjYXRlZBgKIAEoCBIeChZyZWNpcGllbnRfaW5faG91c2Vob2xkGAsgASgIEiEKGXJlY2lwaWVudF9ob3VzZWhvbGRfYWRtaW4YDCABKAgiSAoTQ2xlYXJDbGltYXRlSGlzdG9yeRIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ6ChVDbGltYXRlSGlzdG9yeUNsZWFyZWQSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSLgoKY2xlYXJlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiTgoLU2V0SG9tZU5hbWUSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSDAoEbmFtZRgCIAEoCSJRChJIb3VzZWhvbGRIYW5kb3ZlcnMSOwoJaGFuZG92ZXJzGAEgAygLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyIlwKE0V4cG9ydEhvdXNlaG9sZERhdGESMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEgoKcGFydF90b2tlbhgCIAEoCSK3AwoPSG91c2Vob2xkRXhwb3J0EjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEkAKDXJvb21fY2xpbWF0ZXMYAiABKAsyJy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21DbGltYXRlTGlzdEgAEjsKDHJvb21faGlzdG9yeRgDIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlIABJKCg9jbGltYXRlX3N1bW1hcnkYBCABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASSwoNY29tbWlzc2lvbmluZxgFIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABI4CgdoZWF0aW5nGAYgASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASFwoPbmV4dF9wYXJ0X3Rva2VuGAcgASgJQgYKBHBhcnQqhwEKFFN0YWZmQXBwb2ludG1lbnRLaW5kEiYKIlNUQUZGX0FQUE9JTlRNRU5UX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1TVEFGRl9BUFBPSU5UTUVOVF9LSU5EX0lOVklURRABEiQKIFNUQUZGX0FQUE9JTlRNRU5UX0tJTkRfUFJPTU9USU9OEAIqswEKFkhvdXNlaG9sZEhhbmRvdmVyU3RhdGUSKAokSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASJAogSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX1BFTkRJTkcQARImCiJIT1VTRUhPTERfSEFORE9WRVJfU1RBVEVfQ0FOQ0VMTEVEEAISIQodSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX0RPTkUQA0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity]);
16
+ fileDesc("CiVrdXNpbnRhL2lvdC93ZWJydGMvdjEvaG91c2Vob2xkLnByb3RvEhVrdXNpbnRhLmlvdC53ZWJydGMudjEiewoURGVtb3RlSG91c2Vob2xkQWRtaW4SMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMAoHdXNlcl9pZBgCIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZCL7AQoQU3RhZmZBcHBvaW50bWVudBIyCglhcHBvaW50ZWUYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNQoMYXBwb2ludGVkX2J5GAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEhkKEWFwcG9pbnRlZF9ieV9uYW1lGAMgASgJEiYKAmF0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5CgRraW5kGAUgASgOMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YWZmQXBwb2ludG1lbnRLaW5kIksKFlN0YXJ0SG91c2Vob2xkSGFuZG92ZXISMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiLwoYQ29uZmlybUhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJIi4KF0NhbmNlbEhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJIlEKFkxpc3RIb3VzZWhvbGRIYW5kb3ZlcnMSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQipQQKEUhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJEjEKB2hvbWVfaWQYAiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKBXN0YXRlGAMgASgOMi0ua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyU3RhdGUSMwoKc3RhcnRlZF9ieRgEIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBIXCg9zdGFydGVkX2J5X25hbWUYBSABKAkSGAoQc3RhcnRlZF9ieV9zdGFmZhgGIAEoCBIuCgpzdGFydGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6ChZzdGFmZl9jb25maXJtYWJsZV9mcm9tGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmFjYXRlZBgKIAEoCBIeChZyZWNpcGllbnRfaW5faG91c2Vob2xkGAsgASgIEiEKGXJlY2lwaWVudF9ob3VzZWhvbGRfYWRtaW4YDCABKAgSGgoSbWF5X2VuZF9vbl9tb3ZlX2luGA0gASgIEhgKEGVuZGVkX2J5X21vdmVfaW4YDiABKAgiSAoTQ2xlYXJDbGltYXRlSGlzdG9yeRIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ6ChVDbGltYXRlSGlzdG9yeUNsZWFyZWQSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSLgoKY2xlYXJlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiTgoLU2V0SG9tZU5hbWUSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSDAoEbmFtZRgCIAEoCSJRChJIb3VzZWhvbGRIYW5kb3ZlcnMSOwoJaGFuZG92ZXJzGAEgAygLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyIlwKE0V4cG9ydEhvdXNlaG9sZERhdGESMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEgoKcGFydF90b2tlbhgCIAEoCSK3AwoPSG91c2Vob2xkRXhwb3J0EjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEkAKDXJvb21fY2xpbWF0ZXMYAiABKAsyJy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21DbGltYXRlTGlzdEgAEjsKDHJvb21faGlzdG9yeRgDIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlIABJKCg9jbGltYXRlX3N1bW1hcnkYBCABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASSwoNY29tbWlzc2lvbmluZxgFIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABI4CgdoZWF0aW5nGAYgASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASFwoPbmV4dF9wYXJ0X3Rva2VuGAcgASgJQgYKBHBhcnQqhwEKFFN0YWZmQXBwb2ludG1lbnRLaW5kEiYKIlNUQUZGX0FQUE9JTlRNRU5UX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1TVEFGRl9BUFBPSU5UTUVOVF9LSU5EX0lOVklURRABEiQKIFNUQUZGX0FQUE9JTlRNRU5UX0tJTkRfUFJPTU9USU9OEAIqswEKFkhvdXNlaG9sZEhhbmRvdmVyU3RhdGUSKAokSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASJAogSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX1BFTkRJTkcQARImCiJIT1VTRUhPTERfSEFORE9WRVJfU1RBVEVfQ0FOQ0VMTEVEEAISIQodSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX0RPTkUQA0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity]);
17
17
 
18
18
  /**
19
19
  * Describes the message kusinta.iot.webrtc.v1.DemoteHouseholdAdmin.
@@ -10,7 +10,7 @@ import type { MembershipRelation, Role } from "../../access/v1/roles_pb.js";
10
10
  import type { LorawanProvisioning } from "../../vendor/lorawan/v1/lorawan_pb.js";
11
11
  import type { Space } from "../../space/v1/space_pb.js";
12
12
  import type { LinkFunction, LinkMode, LinkSettings } from "../../link/v1/link_pb.js";
13
- import type { ClimateModeKind, ClimateSummaryPeriod, RoomHistoryResolution } from "../../climate/v1/climate_pb.js";
13
+ import type { ClimateModeKind, ClimateSummaryPeriod, InnerRoomLimits, RoomHistoryResolution } from "../../climate/v1/climate_pb.js";
14
14
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
15
15
  import type { CancelHouseholdHandover, ClearClimateHistory, ConfirmHouseholdHandover, DemoteHouseholdAdmin, ExportHouseholdData, ListHouseholdHandovers, SetHomeName, StaffAppointment, StartHouseholdHandover } from "./household_pb.js";
16
16
  import type { BindingRef, CommissioningFact, CommissioningGrantRecord, HouseTemplate, TestKind, TestState } from "../../commissioning/v1/commissioning_pb.js";
@@ -102,6 +102,9 @@ export declare const CreateSpaceSchema: GenMessage<CreateSpace>;
102
102
  * request setting it is refused whole as NOT_ENTITLED. The household names its home with
103
103
  * SetHomeName instead.
104
104
  *
105
+ * A heating record the change would leave across a home's boundary is refused or undone as
106
+ * HEATING ACROSS A HOME says.
107
+ *
105
108
  * Every descriptive field carries explicit presence: absent means leave it alone, present
106
109
  * means set it to this — including to the empty string, which is how a description is
107
110
  * cleared.
@@ -176,7 +179,8 @@ export declare const UpdateSpaceSchema: GenMessage<UpdateSpace>;
176
179
  * Deletes a space. Refused if the space still holds devices or sub-spaces unless
177
180
  * cascade is set, so that emptying a building is always something the caller
178
181
  * asked for rather than something a stale client did by accident. Deleting a home, or
179
- * anything in one, is guarded as UpdateSpace is.
182
+ * anything in one, is guarded as UpdateSpace is, heating records included
183
+ * (HEATING ACROSS A HOME).
180
184
  *
181
185
  * @generated from message kusinta.iot.webrtc.v1.DeleteSpace
182
186
  */
@@ -221,6 +225,10 @@ export declare const DeleteSpaceSchema: GenMessage<DeleteSpace>;
221
225
  * assigning onto it is refused as NOT_ENTITLED, and RemoveUserFromSpace answers as for one
222
226
  * that does not exist. user_id is never a residency id.
223
227
  *
228
+ * While a vacated handover of the home is pending, the property owner or a gateway
229
+ * administrator assigning RESIDENT to someone outside the departing household completes it
230
+ * first rather than being refused as "handover_pending" (household.proto, QUICK TURNOVER).
231
+ *
224
232
  * @generated from message kusinta.iot.webrtc.v1.AssignUserToSpace
225
233
  */
226
234
  export declare type AssignUserToSpace = Message<"kusinta.iot.webrtc.v1.AssignUserToSpace"> & {
@@ -295,7 +303,8 @@ export declare const RemoveUserFromSpaceSchema: GenMessage<RemoveUserFromSpace>;
295
303
  * the gateway, and within the household it is a household admin's, save a device a resident
296
304
  * owns, which its owner files (household.proto). A caller not allowed is refused as
297
305
  * NOT_ENTITLED, and filing that would leave a link the caller can see across a home's
298
- * boundary is refused whatever the caller; one they cannot see is removed instead.
306
+ * boundary is refused whatever the caller; one they cannot see is removed instead. A heating
307
+ * record left across it is refused or undone as HEATING ACROSS A HOME says.
299
308
  *
300
309
  * @generated from message kusinta.iot.webrtc.v1.PlaceDeviceInSpace
301
310
  */
@@ -322,7 +331,8 @@ export declare const PlaceDeviceInSpaceSchema: GenMessage<PlaceDeviceInSpace>;
322
331
  * space and with no owner is unfiled, and visible only to the administrator.
323
332
  *
324
333
  * Taking a device out of a home is guarded as PlaceDeviceInSpace is, and removes its links
325
- * to devices still in the home.
334
+ * to devices still in the home; a heating record it would leave across the boundary is refused
335
+ * or undone as HEATING ACROSS A HOME says.
326
336
  *
327
337
  * @generated from message kusinta.iot.webrtc.v1.RemoveDeviceFromSpace
328
338
  */
@@ -352,7 +362,9 @@ export declare const RemoveDeviceFromSpaceSchema: GenMessage<RemoveDeviceFromSpa
352
362
  *
353
363
  * Only a RESIDENT claim makes the caller the owner. A COMPANY claim records that the
354
364
  * building owns the device, names no person, and grants the caller no reach. Claims of a
355
- * device in a home, or of one already claimed, are restricted by the gateway.
365
+ * device in a home, or of one already claimed, are restricted by the gateway. A claim, with
366
+ * initial_space_id or without, that would leave a heating record across a home's boundary is
367
+ * refused or undone as HEATING ACROSS A HOME says.
356
368
  *
357
369
  * @generated from message kusinta.iot.webrtc.v1.ClaimDevice
358
370
  */
@@ -404,9 +416,10 @@ export declare type ClaimDevice = Message<"kusinta.iot.webrtc.v1.ClaimDevice"> &
404
416
  export declare const ClaimDeviceSchema: GenMessage<ClaimDevice>;
405
417
 
406
418
  /**
407
- * Gives up ownership. The device keeps whatever space filing it has, except that a device in
408
- * a home stays filed in the home alone, as one of the building's own devices there — as
409
- * when its owner moves out; if it has none it becomes unfiled.
419
+ * Gives up ownership. The device keeps whatever space filing it has, except that a device in a
420
+ * home stays filed in the home alone, as one of the building's own devices there — as when its
421
+ * owner moves out; if it has none it becomes unfiled. A heating record the release would leave
422
+ * across a home's boundary is undone, never refused (HEATING ACROSS A HOME).
410
423
  *
411
424
  * @generated from message kusinta.iot.webrtc.v1.ReleaseDevice
412
425
  */
@@ -566,8 +579,10 @@ export declare const ManagementAckSchema: GenMessage<ManagementAck>;
566
579
  * to someone else's hardware.
567
580
  *
568
581
  * In a home it is the other way round: links between its devices are its residents' to
569
- * make, change and remove, and a caller who reaches it as service is refused as
570
- * NOT_ENTITLED. A link between a device in a home and one outside it is refused to anyone.
582
+ * make, change and remove, and in an empty home (household.proto, EMPTY HOME) the property
583
+ * owner's and the gateway administrators' who reach it; any other caller who reaches it as
584
+ * service is refused as NOT_ENTITLED. A link between a device in a home and one outside it is
585
+ * refused to anyone.
571
586
  * The same holds for UpdateDeviceLink and RemoveDeviceLink.
572
587
  *
573
588
  * @generated from message kusinta.iot.webrtc.v1.CreateDeviceLink
@@ -712,11 +727,13 @@ export declare const ListDeviceLinksSchema: GenMessage<ListDeviceLinks>;
712
727
  * as turning a radiator's knob; setting up what the room obeys is ConfigureRoomClimate,
713
728
  * and stays with owners, except the lock in a home.
714
729
  *
715
- * In a home, only its residents may set it; a caller who reaches the room as service is
716
- * refused as NOT_ENTITLED.
730
+ * In a home, only its residents may set it, and in an empty home the property owner and the
731
+ * gateway administrators who reach it (household.proto, EMPTY HOME); any other caller who
732
+ * reaches the room as service is refused as NOT_ENTITLED.
717
733
  *
718
- * Clamped to the room's limits rather than refused outside them, and the clamped value is
719
- * what the room's RoomClimate then reports.
734
+ * Clamped to the room's inner limits (climate.v1.InnerRoomLimits) rather than refused outside
735
+ * them, and the clamped value is what the room's RoomClimate then reports; never to the outer
736
+ * ones (climate.v1.OuterRoomLimits, WHAT THEY BIND).
720
737
  *
721
738
  * @generated from message kusinta.iot.webrtc.v1.SetRoomTarget
722
739
  */
@@ -790,17 +807,58 @@ export declare type RoomLimits = Message<"kusinta.iot.webrtc.v1.RoomLimits"> & {
790
807
  export declare const RoomLimitsSchema: GenMessage<RoomLimits>;
791
808
 
792
809
  /**
793
- * Configures what a room obeys: its limits, its sensors, and whether a change made by
794
- * hand at one of its devices counts. Authorized as directing — owners and filing roles —
795
- * because this decides what everybody in the room can do.
810
+ * One bound that moves alone, for the same reason as RoomLimits: unset leaves the bound as it
811
+ * is; set, an unset centidegrees removes it.
796
812
  *
797
- * One exception: in a home, lock_device_controls is its residents' alone. They may send
798
- * this request with nothing else set. Outside homes the lock is the owner's, as the rest
799
- * is. A request that sets anything its caller may not — the lock in a home for service;
800
- * anything but the lock in a home, or the lock outside one, for a caller with neither
801
- * ROLE_PROPERTY_OWNER nor a filing role — is refused whole as NOT_ENTITLED, so nothing of
802
- * it applies. sensors orders only the building's own
803
- * sensors (see RoomClimate.sensor_ids).
813
+ * @generated from message kusinta.iot.webrtc.v1.RoomLimitValue
814
+ */
815
+ export declare type RoomLimitValue = Message<"kusinta.iot.webrtc.v1.RoomLimitValue"> & {
816
+ /**
817
+ * @generated from field: optional sint32 centidegrees = 1;
818
+ */
819
+ centidegrees?: number | undefined;
820
+ };
821
+
822
+ /**
823
+ * Describes the message kusinta.iot.webrtc.v1.RoomLimitValue.
824
+ * Use `create(RoomLimitValueSchema)` to create a new message.
825
+ */
826
+ export declare const RoomLimitValueSchema: GenMessage<RoomLimitValue>;
827
+
828
+ /**
829
+ * Configures what a room obeys: its outer limits, its sensors, and whether a change made by
830
+ * hand at one of its devices counts. Authorized as directing, because this decides what
831
+ * everybody in the room can do, and each part by its own deciders:
832
+ * * the outer limits — limits, away_min, move_in_target (climate.v1.OuterRoomLimits) — the
833
+ * property owner or a gateway administrator who reaches the room, or an installer under an
834
+ * active commissioning grant covering it (commissioning.v1, GRANTS), in a home or not. A
835
+ * household's own limits are SetInnerRoomLimits;
836
+ * * sensors — ROLE_PROPERTY_OWNER or a filing role. It orders only the building's own
837
+ * sensors (see RoomClimate.sensor_ids);
838
+ * * lock_device_controls — in a home, its residents', who may send this request with nothing
839
+ * else set, and in an empty home the property owner's and the gateway administrators' who
840
+ * reach it (household.proto, EMPTY HOME); outside homes, ROLE_PROPERTY_OWNER's or a filing
841
+ * role's, as the sensors are.
842
+ * A request that sets anything its caller may not is refused whole as NOT_ENTITLED, so nothing
843
+ * of it applies, with metadata {"field": the first such part, by its proto field name —
844
+ * "limits", "away_min", "move_in_target", "sensors" or "lock_device_controls"}, which tells the
845
+ * caller only what they may not set. Rollout note: outer limits were once a filing role's; a
846
+ * filing role that is neither ROLE_PROPERTY_OWNER nor ROLE_GATEWAY_ADMIN, without a grant, is
847
+ * now refused them, so an app offers the outer limits to those roles alone and sends sensors on
848
+ * their own.
849
+ *
850
+ * Each outer bound the request changes is stamped with the caller's role and the time
851
+ * (climate.v1.OuterLimit); one set to the value it has keeps its stamp. As the outer limits
852
+ * will stand, min above max, away_min above min or max, or move_in_target outside [min, max]
853
+ * where those are set, is refused as INVALID_REQUEST with metadata {"reason": "limits_order"}.
854
+ * A min changed to below the gateway's public-health threshold — its own setting, which no
855
+ * operation in this contract changes; none while unset — needs accept_below_threshold, and is
856
+ * refused without it as FAILED_PRECONDITION with metadata {"reason": "below_threshold",
857
+ * "threshold_centidegrees": the threshold}. Nothing in the answer to the outer limits depends
858
+ * on the home's state — its targets, inner limits, modes, or who lives there — so setting them
859
+ * tells the caller nothing of it; what they clamp is told to the household alone
860
+ * (RoomClimate.outer_limit_clamp). Only the lock in the same request is decided by whether the
861
+ * home is empty, as EMPTY HOME says.
804
862
  *
805
863
  * Each field moves alone, as on UpdateSpace: unset leaves it as it is.
806
864
  *
@@ -813,7 +871,8 @@ export declare type ConfigureRoomClimate = Message<"kusinta.iot.webrtc.v1.Config
813
871
  roomId?: SpaceId | undefined;
814
872
 
815
873
  /**
816
- * Replaces both bounds; see RoomLimits.
874
+ * The outer limits' min and max (climate.v1.OuterRoomLimits); replaces both bounds, see
875
+ * RoomLimits.
817
876
  *
818
877
  * @generated from field: kusinta.iot.webrtc.v1.RoomLimits limits = 2;
819
878
  */
@@ -831,6 +890,27 @@ export declare type ConfigureRoomClimate = Message<"kusinta.iot.webrtc.v1.Config
831
890
  * @generated from field: optional bool lock_device_controls = 4;
832
891
  */
833
892
  lockDeviceControls?: boolean | undefined;
893
+
894
+ /**
895
+ * The outer limits' away minimum and move-in target, each alone; see RoomLimitValue.
896
+ *
897
+ * @generated from field: kusinta.iot.webrtc.v1.RoomLimitValue away_min = 5;
898
+ */
899
+ awayMin?: RoomLimitValue | undefined;
900
+
901
+ /**
902
+ * @generated from field: kusinta.iot.webrtc.v1.RoomLimitValue move_in_target = 6;
903
+ */
904
+ moveInTarget?: RoomLimitValue | undefined;
905
+
906
+ /**
907
+ * The caller accepts a min below the public-health threshold, recorded with the bound
908
+ * (OuterRoomLimits.min_accepted_threshold_centidegrees). Ignored on a request that sets no
909
+ * such min.
910
+ *
911
+ * @generated from field: bool accept_below_threshold = 7;
912
+ */
913
+ acceptBelowThreshold: boolean;
834
914
  };
835
915
 
836
916
  /**
@@ -839,6 +919,36 @@ export declare type ConfigureRoomClimate = Message<"kusinta.iot.webrtc.v1.Config
839
919
  */
840
920
  export declare const ConfigureRoomClimateSchema: GenMessage<ConfigureRoomClimate>;
841
921
 
922
+ /**
923
+ * Sets a room's inner limits (climate.v1.InnerRoomLimits). Answered with ManagementAck. A
924
+ * household admin of the home the room is in only (household.proto, HOUSEHOLD ADMIN); anyone
925
+ * else, and a room in no home, is refused as NOT_ENTITLED — never covered by a commissioning
926
+ * grant. min above max is refused as INVALID_REQUEST with metadata {"reason": "limits_order"}.
927
+ * Bounds outside the outer limits are accepted as they are (climate.v1.OuterRoomLimits, HELD).
928
+ * The room's target is clamped into the new limits.
929
+ *
930
+ * @generated from message kusinta.iot.webrtc.v1.SetInnerRoomLimits
931
+ */
932
+ export declare type SetInnerRoomLimits = Message<"kusinta.iot.webrtc.v1.SetInnerRoomLimits"> & {
933
+ /**
934
+ * @generated from field: kusinta.iot.identity.v1.SpaceId room_id = 1;
935
+ */
936
+ roomId?: SpaceId | undefined;
937
+
938
+ /**
939
+ * Replaces both bounds: a bound unset in it, or limits unset, removes them.
940
+ *
941
+ * @generated from field: kusinta.iot.climate.v1.InnerRoomLimits limits = 2;
942
+ */
943
+ limits?: InnerRoomLimits | undefined;
944
+ };
945
+
946
+ /**
947
+ * Describes the message kusinta.iot.webrtc.v1.SetInnerRoomLimits.
948
+ * Use `create(SetInnerRoomLimitsSchema)` to create a new message.
949
+ */
950
+ export declare const SetInnerRoomLimitsSchema: GenMessage<SetInnerRoomLimits>;
951
+
842
952
  /**
843
953
  * Switches a mode on a space on, or off with kind UNSPECIFIED. WRITE on the space.
844
954
  * Switching one on needs setback_centidegrees; a mode with nothing to set back to is
@@ -849,11 +959,11 @@ export declare const ConfigureRoomClimateSchema: GenMessage<ConfigureRoomClimate
849
959
  *
850
960
  * In a home, only its residents may switch one on or off: whether a home stands empty is
851
961
  * theirs to say. A caller who reaches it as service is refused as NOT_ENTITLED — except
852
- * that, while the home has no resident, ROLE_PROPERTY_OWNER or ROLE_GATEWAY_ADMIN may
853
- * switch off a mode that is on and whose setter is not a resident, so that no mode
854
- * outlives everyone who could end it. Any other switch-off from them — no mode on, or one
855
- * that is a resident's — is accepted and does nothing, so the answer tells them nothing of
856
- * whether a mode was on or whether anyone has moved in.
962
+ * that, while the home is empty (household.proto, EMPTY HOME), ROLE_PROPERTY_OWNER or
963
+ * ROLE_GATEWAY_ADMIN may switch one on, and switch off one that is on, so that no mode
964
+ * outlives everyone who could end it. Any other switch-off from them — in a home that is not
965
+ * empty, or with no mode on — is accepted and does nothing, so the answer tells them nothing of
966
+ * whether a mode was on.
857
967
  *
858
968
  * @generated from message kusinta.iot.webrtc.v1.SetClimateMode
859
969
  */
@@ -898,7 +1008,9 @@ export declare const SetClimateModeSchema: GenMessage<SetClimateMode>;
898
1008
  *
899
1009
  * A caller who reaches a room inside an apartment as service gets it with
900
1010
  * RoomClimate.state_withheld set — what is new as it happens, what is gone at once — and
901
- * gets no ClimateMode set on that apartment or its rooms.
1011
+ * gets no ClimateMode set on that apartment or its rooms; save the property owner and the
1012
+ * gateway administrators while the home is empty, who get both as for a space outside homes
1013
+ * (household.proto, EMPTY HOME).
902
1014
  *
903
1015
  * @generated from message kusinta.iot.webrtc.v1.ListRoomClimates
904
1016
  */
@@ -1046,8 +1158,9 @@ export declare type PrivacyDisclosure = Message<"kusinta.iot.webrtc.v1.PrivacyDi
1046
1158
 
1047
1159
  /**
1048
1160
  * Each commissioning grant on this home that was granted since it was last wiped, oldest
1049
- * first, active ones included (commissioning.v1, GRANTS): who held commissioning access to the
1050
- * home, and when. Given to the home's residents only, as staff_appointments is.
1161
+ * first, active ones included, and those the property owner or a gateway administrator
1162
+ * granted while it stood empty among them (commissioning.v1, GRANTS): who held commissioning
1163
+ * access to the home, and when. Given to the home's residents only, as staff_appointments is.
1051
1164
  *
1052
1165
  * @generated from field: repeated kusinta.iot.commissioning.v1.CommissioningGrantRecord commissioning_grants = 9;
1053
1166
  */
@@ -1786,9 +1899,11 @@ export declare const RequestCommissioningGrantSchema: GenMessage<RequestCommissi
1786
1899
  /**
1787
1900
  * Answers a requested commissioning grant, answered with the CommissioningGrant as stored when
1788
1901
  * granted, and with ManagementAck when declined, which ends it. From a household admin of the
1789
- * home, or for a space outside homes the property owner or a gateway administrator who reaches
1790
- * it; anyone else, and a grant_id that is not requested on a space the caller may answer for,
1791
- * is refused as NOT_ENTITLED, so that no grant id can be probed.
1902
+ * home, or for a space outside homes or an empty home (household.proto, EMPTY HOME) the
1903
+ * property owner or a gateway administrator who reaches it; anyone else, and a grant_id that is
1904
+ * not requested on a space the caller may answer for, is refused as NOT_ENTITLED, so that no
1905
+ * grant id can be probed. So is a grant that names the caller as its installer, whoever they
1906
+ * are (commissioning.v1, GRANTS).
1792
1907
  *
1793
1908
  * Granting needs ends_at after starts_at, no more than 14 days after it, and starts_at no
1794
1909
  * later than 30 days from now; otherwise INVALID_REQUEST with metadata
@@ -1851,8 +1966,9 @@ export declare const EndCommissioningGrantSchema: GenMessage<EndCommissioningGra
1851
1966
 
1852
1967
  /**
1853
1968
  * Lists the commissioning grants that have not ended on a space and those below it, answered
1854
- * with CommissioningGrants: a home's to its residents; one on a space outside homes to the
1855
- * property owner and the gateway administrators who reach it; to an installer, their own.
1969
+ * with CommissioningGrants: a home's to its residents, and an empty home's (household.proto,
1970
+ * EMPTY HOME) to the property owner and the gateway administrators who reach it, as one on a
1971
+ * space outside homes is; to an installer, their own.
1856
1972
  * Unset root_space_id lists every one the caller may be listed. Anyone may ask; nobody is
1857
1973
  * refused, and a caller listed none gets none.
1858
1974
  *
@@ -1873,7 +1989,8 @@ export declare const ListCommissioningGrantsSchema: GenMessage<ListCommissioning
1873
1989
 
1874
1990
  /**
1875
1991
  * Sets who owns one of the building's own devices as an asset (common.v1.AssetOwner), and
1876
- * with it nobody's access. Answered with ManagementAck. From the property owner or a gateway
1992
+ * with it whether a room's outer limits can bind the device (climate.v1.OuterRoomLimits), and
1993
+ * nobody's access. Answered with ManagementAck. From the property owner or a gateway
1877
1994
  * administrator who reaches the device; anyone else is refused as NOT_ENTITLED. Unset
1878
1995
  * asset_owner clears it, as does one with neither owner set.
1879
1996
  *
@@ -2345,6 +2462,12 @@ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.Managemen
2345
2462
  */
2346
2463
  value: ClearClimateHistory;
2347
2464
  case: "clearClimateHistory";
2465
+ } | {
2466
+ /**
2467
+ * @generated from field: kusinta.iot.webrtc.v1.SetInnerRoomLimits set_inner_room_limits = 70;
2468
+ */
2469
+ value: SetInnerRoomLimits;
2470
+ case: "setInnerRoomLimits";
2348
2471
  } | { case: undefined; value?: undefined };
2349
2472
  };
2350
2473