@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.
Files changed (73) hide show
  1. package/package.json +44 -29
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +146 -2
  3. package/src/kusinta/iot/access/v1/acl_pb.js +19 -2
  4. package/src/kusinta/iot/access/v1/roles_pb.d.ts +160 -4
  5. package/src/kusinta/iot/access/v1/roles_pb.js +128 -5
  6. package/src/kusinta/iot/accountlink/v1/account_link_pb.d.ts +591 -0
  7. package/src/kusinta/iot/accountlink/v1/account_link_pb.js +160 -0
  8. package/src/kusinta/iot/climate/v1/climate_pb.d.ts +1695 -0
  9. package/src/kusinta/iot/climate/v1/climate_pb.js +292 -0
  10. package/src/kusinta/iot/commissioning/v1/commissioning_pb.d.ts +1642 -0
  11. package/src/kusinta/iot/commissioning/v1/commissioning_pb.js +339 -0
  12. package/src/kusinta/iot/common/v1/pairing_pb.d.ts +24 -4
  13. package/src/kusinta/iot/common/v1/pairing_pb.js +1 -1
  14. package/src/kusinta/iot/common/v1/types_pb.d.ts +235 -0
  15. package/src/kusinta/iot/common/v1/types_pb.js +84 -2
  16. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +713 -3
  17. package/src/kusinta/iot/connector/v1/connector_pb.js +107 -16
  18. package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +213 -1
  19. package/src/kusinta/iot/device/v1/cluster_state_pb.js +37 -2
  20. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +32 -4
  21. package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
  22. package/src/kusinta/iot/device/v1/device_event_pb.d.ts +89 -5
  23. package/src/kusinta/iot/device/v1/device_event_pb.js +1 -1
  24. package/src/kusinta/iot/device/v1/device_pb.d.ts +444 -11
  25. package/src/kusinta/iot/device/v1/device_pb.js +74 -2
  26. package/src/kusinta/iot/device/v1/properties_pb.d.ts +26 -5
  27. package/src/kusinta/iot/device/v1/properties_pb.js +1 -1
  28. package/src/kusinta/iot/device/v1/property_update_pb.d.ts +46 -2
  29. package/src/kusinta/iot/device/v1/property_update_pb.js +2 -1
  30. package/src/kusinta/iot/heating/v1/heating_pb.d.ts +659 -0
  31. package/src/kusinta/iot/heating/v1/heating_pb.js +119 -0
  32. package/src/kusinta/iot/link/v1/link_pb.d.ts +438 -0
  33. package/src/kusinta/iot/link/v1/link_pb.js +121 -0
  34. package/src/kusinta/iot/planning/v1/planning_pb.d.ts +199 -0
  35. package/src/kusinta/iot/planning/v1/planning_pb.js +48 -0
  36. package/src/kusinta/iot/planning/v1/planning_service_pb.d.ts +121 -0
  37. package/src/kusinta/iot/planning/v1/planning_service_pb.js +38 -0
  38. package/src/kusinta/iot/registration/v1/registration_pb.d.ts +18 -0
  39. package/src/kusinta/iot/registration/v1/registration_pb.js +1 -1
  40. package/src/kusinta/iot/reporting/v1/reporting_pb.d.ts +1263 -0
  41. package/src/kusinta/iot/reporting/v1/reporting_pb.js +238 -0
  42. package/src/kusinta/iot/reporting/v1/reporting_service_pb.d.ts +63 -0
  43. package/src/kusinta/iot/reporting/v1/reporting_service_pb.js +24 -0
  44. package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +939 -7
  45. package/src/kusinta/iot/signaling/v1/signaling_pb.js +163 -4
  46. package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +24 -1
  47. package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +1 -1
  48. package/src/kusinta/iot/space/v1/space_pb.d.ts +218 -3
  49. package/src/kusinta/iot/space/v1/space_pb.js +25 -2
  50. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +15 -0
  51. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +1 -1
  52. package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.d.ts +69 -0
  53. package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.js +19 -0
  54. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +5 -4
  55. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +5 -4
  56. package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +48 -5
  57. package/src/kusinta/iot/webrtc/v1/app_token_pb.js +1 -1
  58. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +56 -0
  59. package/src/kusinta/iot/webrtc/v1/command_pb.js +1 -1
  60. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +179 -5
  61. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +34 -5
  62. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +603 -13
  63. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +61 -4
  64. package/src/kusinta/iot/webrtc/v1/household_pb.d.ts +613 -0
  65. package/src/kusinta/iot/webrtc/v1/household_pb.js +134 -0
  66. package/src/kusinta/iot/webrtc/v1/invite_pb.d.ts +502 -0
  67. package/src/kusinta/iot/webrtc/v1/invite_pb.js +108 -0
  68. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +2595 -75
  69. package/src/kusinta/iot/webrtc/v1/management_pb.js +382 -5
  70. package/src/kusinta/iot/webrtc/v1/members_pb.d.ts +582 -0
  71. package/src/kusinta/iot/webrtc/v1/members_pb.js +113 -0
  72. package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +66 -4
  73. package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +9 -1
@@ -0,0 +1,1263 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/reporting/v1/reporting.proto (package kusinta.iot.reporting.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
+ import type { Message } from "@bufbuild/protobuf";
7
+ import type { ConnectorId, DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
8
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
9
+ import type { BackendFailureReason, SpaceType } from "../../common/v1/types_pb.js";
10
+ import type { Role } from "../../access/v1/roles_pb.js";
11
+
12
+ /**
13
+ * Describes the file kusinta/iot/reporting/v1/reporting.proto.
14
+ */
15
+ export declare const file_kusinta_iot_reporting_v1_reporting: GenFile;
16
+
17
+ /**
18
+ * One part of a full set: a concern's whole current state, sent on every new stream as above.
19
+ * A large set may span several requests, each carrying the same snapshot_id.
20
+ *
21
+ * The api-server applies a snapshot only once it holds every part of it: parts 0 to the one
22
+ * marked last, all with one snapshot_id, on one stream. Then, and only then, it drops what
23
+ * the snapshot does not name — closing open problems that are absent, forgetting reach and
24
+ * spaces that are absent. A snapshot belongs to its stream: a part with another snapshot_id,
25
+ * or any request on a newer stream, discards a snapshot in progress. A snapshot not
26
+ * completed is never applied, and the next stream sends its own.
27
+ *
28
+ * While a snapshot of a concern is in progress, the gateway sends that concern nothing but
29
+ * the snapshot's parts; whatever it queued meanwhile follows the last part. A change sent
30
+ * between parts could be missing from a snapshot built before it, and completing the snapshot
31
+ * would then undo it. A request without a snapshot part that arrives while one is in progress
32
+ * is not applied: the answer's applied_seq does not cover it.
33
+ *
34
+ * A part other than the last is held, not applied, but its seq counts as applied: the gateway
35
+ * sends the next. The snapshot applies with its last part.
36
+ *
37
+ * @generated from message kusinta.iot.reporting.v1.SnapshotPart
38
+ */
39
+ export declare type SnapshotPart = Message<"kusinta.iot.reporting.v1.SnapshotPart"> & {
40
+ /**
41
+ * Minted by the gateway, opaque, unique per snapshot.
42
+ *
43
+ * @generated from field: string snapshot_id = 1;
44
+ */
45
+ snapshotId: string;
46
+
47
+ /**
48
+ * This part's place in the snapshot, from 0.
49
+ *
50
+ * @generated from field: uint32 part = 2;
51
+ */
52
+ part: number;
53
+
54
+ /**
55
+ * Set on the final part. The snapshot has part + 1 parts.
56
+ *
57
+ * @generated from field: bool last = 3;
58
+ */
59
+ last: boolean;
60
+ };
61
+
62
+ /**
63
+ * Describes the message kusinta.iot.reporting.v1.SnapshotPart.
64
+ * Use `create(SnapshotPartSchema)` to create a new message.
65
+ */
66
+ export declare const SnapshotPartSchema: GenMessage<SnapshotPart>;
67
+
68
+ /**
69
+ * The thing a problem is about.
70
+ *
71
+ * @generated from message kusinta.iot.reporting.v1.ProblemSubject
72
+ */
73
+ export declare type ProblemSubject = Message<"kusinta.iot.reporting.v1.ProblemSubject"> & {
74
+ /**
75
+ * @generated from oneof kusinta.iot.reporting.v1.ProblemSubject.subject
76
+ */
77
+ subject: {
78
+ /**
79
+ * DEVICE_OFFLINE, BATTERY_*, DEVICE_ERROR, DEVICE_TAMPER; FLOOR_ZONE_UNCONTROLLED: the
80
+ * device whose output the zone binds.
81
+ *
82
+ * @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
83
+ */
84
+ value: DeviceId;
85
+ case: "deviceId";
86
+ } | {
87
+ /**
88
+ * CONNECTOR_OFFLINE, CONNECTOR_ERROR.
89
+ *
90
+ * @generated from field: kusinta.iot.identity.v1.ConnectorId connector_id = 2;
91
+ */
92
+ value: ConnectorId;
93
+ case: "connectorId";
94
+ } | {
95
+ /**
96
+ * WINDOW_OPEN: the room.
97
+ *
98
+ * @generated from field: kusinta.iot.identity.v1.SpaceId room_id = 3;
99
+ */
100
+ value: SpaceId;
101
+ case: "roomId";
102
+ } | {
103
+ /**
104
+ * UNFILED_DEVICES, PLANNING_INPUTS_STALE: the gateway itself.
105
+ *
106
+ * @generated from field: bool gateway = 4;
107
+ */
108
+ value: boolean;
109
+ case: "gateway";
110
+ } | { case: undefined; value?: undefined };
111
+ };
112
+
113
+ /**
114
+ * Describes the message kusinta.iot.reporting.v1.ProblemSubject.
115
+ * Use `create(ProblemSubjectSchema)` to create a new message.
116
+ */
117
+ export declare const ProblemSubjectSchema: GenMessage<ProblemSubject>;
118
+
119
+ /**
120
+ * A problem as it stands while open.
121
+ *
122
+ * For a device in a home (an apartment, or a room in one), a problem carries only what a
123
+ * ServiceStatus would give service staff of it, at the same precision:
124
+ * * opened_at is the quarter hour the gateway's evaluated status changed, never the time
125
+ * of a device report;
126
+ * * battery_percent is rounded up to a multiple of ten, as ServiceStatus.battery_percent is;
127
+ * * the only device faults reported are DEVICE_ERROR and DEVICE_TAMPER.
128
+ * A device a resident owns raises no problem at all: it is theirs, and building staff are not
129
+ * told of it.
130
+ *
131
+ * When a transition for a device in a home is sent matters as much as what it carries: the
132
+ * gateway evaluates such a device's problems only at quarter hours, so a condition that comes
133
+ * and goes between two of them changes nothing — a connector problem that comes and goes so
134
+ * sends nothing about the device, though it leaves its connector settling after it (see
135
+ * ClearReason) — and it sends a
136
+ * transition only at that evaluation, as ServiceStatus changes are pushed,
137
+ * never on the device report that prompted it. That holds for every transition of such a
138
+ * device, a clear for its removal or a SUPERSEDED_* clear included: each is sent, and
139
+ * stamped, at the next quarter hour.
140
+ *
141
+ * @generated from message kusinta.iot.reporting.v1.Problem
142
+ */
143
+ export declare type Problem = Message<"kusinta.iot.reporting.v1.Problem"> & {
144
+ /**
145
+ * @generated from field: kusinta.iot.reporting.v1.ProblemKind kind = 2;
146
+ */
147
+ kind: ProblemKind;
148
+
149
+ /**
150
+ * @generated from field: kusinta.iot.reporting.v1.ProblemSubject subject = 3;
151
+ */
152
+ subject?: ProblemSubject | undefined;
153
+
154
+ /**
155
+ * The space a device subject is filed in. A device filed in several spaces, any of them in a
156
+ * home (an apartment or a room in one), counts as in a home, as access.v1 has it, and reports
157
+ * the deepest space it is filed in within any home, the lowest id between equals. Otherwise
158
+ * the deepest it is filed in, the lowest id between equals. Unset for any other subject (a
159
+ * room is its own place) and for a device filed nowhere.
160
+ *
161
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 4;
162
+ */
163
+ spaceId?: SpaceId | undefined;
164
+
165
+ /**
166
+ * When the problem opened. For a device in a home, the quarter hour; see above.
167
+ *
168
+ * A problem's space is space_id for a device subject and room_id for a room subject; a
169
+ * connector or the gateway has none.
170
+ *
171
+ * Of any problem with a space, the api-server shows a member only what falls within their
172
+ * unbroken reach to that space, from the since the gateway gives for it (see ReachedSpace),
173
+ * or for the administrator from when their administration began (see ServiceReach):
174
+ * a problem that closed at or before then is not shown to them at all, and an opened_at
175
+ * before then shows as then. Applied whether or not the space is in a home now, since a
176
+ * space may have been one while the problem was open. The gateway likewise never shows
177
+ * service staff a status from before they could see the device. A problem whose space the
178
+ * api-server does not hold is shown only to the gateway's administrator (see ServiceReach),
179
+ * its times as of when that administration began.
180
+ *
181
+ * @generated from field: google.protobuf.Timestamp opened_at = 5;
182
+ */
183
+ openedAt?: Timestamp | undefined;
184
+
185
+ /**
186
+ * BATTERY_*: remaining charge, rounded up to a multiple of ten. Absent when the device
187
+ * reports none.
188
+ *
189
+ * @generated from field: optional uint32 battery_percent = 6;
190
+ */
191
+ batteryPercent?: number | undefined;
192
+
193
+ /**
194
+ * UNFILED_DEVICES: how many devices are filed nowhere.
195
+ *
196
+ * @generated from field: uint32 device_count = 7;
197
+ */
198
+ deviceCount: number;
199
+
200
+ /**
201
+ * CONNECTOR_ERROR: why the connector's backend is failing, as the connector's latest
202
+ * connector.v1.BackendHealthReport states it. A category, not a message: the connector's
203
+ * free-text detail is never reported, here or anywhere else. UNSPECIFIED for every other
204
+ * kind, and for a connector that stated no reason. A change of reason while the problem is
205
+ * open is sent as a change of the problem.
206
+ *
207
+ * @generated from field: kusinta.iot.common.v1.BackendFailureReason backend_failure = 8;
208
+ */
209
+ backendFailure: BackendFailureReason;
210
+ };
211
+
212
+ /**
213
+ * Describes the message kusinta.iot.reporting.v1.Problem.
214
+ * Use `create(ProblemSchema)` to create a new message.
215
+ */
216
+ export declare const ProblemSchema: GenMessage<Problem>;
217
+
218
+ /**
219
+ * A problem closing.
220
+ *
221
+ * @generated from message kusinta.iot.reporting.v1.ProblemCleared
222
+ */
223
+ export declare type ProblemCleared = Message<"kusinta.iot.reporting.v1.ProblemCleared"> & {
224
+ /**
225
+ * When it closed. For a device in a home, the quarter hour the evaluated status changed,
226
+ * as for opened_at; never the time of a device report.
227
+ *
228
+ * @generated from field: google.protobuf.Timestamp cleared_at = 1;
229
+ */
230
+ clearedAt?: Timestamp | undefined;
231
+
232
+ /**
233
+ * @generated from field: kusinta.iot.reporting.v1.ClearReason reason = 2;
234
+ */
235
+ reason: ClearReason;
236
+ };
237
+
238
+ /**
239
+ * Describes the message kusinta.iot.reporting.v1.ProblemCleared.
240
+ * Use `create(ProblemClearedSchema)` to create a new message.
241
+ */
242
+ export declare const ProblemClearedSchema: GenMessage<ProblemCleared>;
243
+
244
+ /**
245
+ * One change to one problem.
246
+ *
247
+ * (problem_id, seq) is the idempotency key. seq counts the transitions of one problem from 1:
248
+ * its opening is 1, and each later change one more. Outside a snapshot, the api-server
249
+ * applies a transition only if its seq is above the highest it holds for that problem; any
250
+ * other — a repeat, or a retry overtaken by a later change — is acknowledged as a duplicate
251
+ * and not applied, so a late update cannot reopen a problem since cleared. Seqs of one
252
+ * problem need not arrive without gaps: each transition carries the problem's whole state.
253
+ *
254
+ * A snapshot is authoritative: each problem it names takes the snapshot's state and seq,
255
+ * whatever the api-server held. A transition in it acknowledged REJECTED does not count as
256
+ * naming its problem. A problem it does not name, the api-server closes as of the snapshot,
257
+ * with no reason given (CLEAR_REASON_UNSPECIFIED), at the quarter hour the snapshot completed,
258
+ * rounded down whatever the subject (the api-server may not yet know where it is), and never
259
+ * earlier than the problem's opened_at. Its highest seq stays as held, so only a later
260
+ * transition of it applies.
261
+ *
262
+ * @generated from message kusinta.iot.reporting.v1.ProblemTransition
263
+ */
264
+ export declare type ProblemTransition = Message<"kusinta.iot.reporting.v1.ProblemTransition"> & {
265
+ /**
266
+ * Minted by the gateway for one open period of one (subject, kind), stable across gateway
267
+ * restarts. A problem that clears and opens again is a new problem with a new id.
268
+ *
269
+ * A UUIDv4: opaque, and never time-ordered. An id that sorted by time (a ULID, a UUIDv7)
270
+ * would carry the moment a problem opened, which the quarter-hour rule withholds.
271
+ *
272
+ * @generated from field: string problem_id = 1;
273
+ */
274
+ problemId: string;
275
+
276
+ /**
277
+ * @generated from field: uint64 seq = 2;
278
+ */
279
+ seq: bigint;
280
+
281
+ /**
282
+ * @generated from oneof kusinta.iot.reporting.v1.ProblemTransition.change
283
+ */
284
+ change: {
285
+ /**
286
+ * The problem opened, or something it carries changed while open (a battery level, a
287
+ * device count, the space it is filed in, a backend failure reason). Carries the whole
288
+ * problem, not a delta: the same problem_id, the next seq and the original opened_at.
289
+ *
290
+ * @generated from field: kusinta.iot.reporting.v1.Problem open = 3;
291
+ */
292
+ value: Problem;
293
+ case: "open";
294
+ } | {
295
+ /**
296
+ * @generated from field: kusinta.iot.reporting.v1.ProblemCleared cleared = 4;
297
+ */
298
+ value: ProblemCleared;
299
+ case: "cleared";
300
+ } | { case: undefined; value?: undefined };
301
+ };
302
+
303
+ /**
304
+ * Describes the message kusinta.iot.reporting.v1.ProblemTransition.
305
+ * Use `create(ProblemTransitionSchema)` to create a new message.
306
+ */
307
+ export declare const ProblemTransitionSchema: GenMessage<ProblemTransition>;
308
+
309
+ /**
310
+ * @generated from message kusinta.iot.reporting.v1.ReportProblemsRequest
311
+ */
312
+ export declare type ReportProblemsRequest = Message<"kusinta.iot.reporting.v1.ReportProblemsRequest"> & {
313
+ /**
314
+ * This concern's stream and the request's place on it; see SnapshotPart.
315
+ *
316
+ * @generated from field: string stream_id = 3;
317
+ */
318
+ streamId: string;
319
+
320
+ /**
321
+ * The streams this one replaced; see SnapshotPart. Empty on the gateway's first.
322
+ *
323
+ * @generated from field: repeated string previous_stream_ids = 5;
324
+ */
325
+ previousStreamIds: string[];
326
+
327
+ /**
328
+ * @generated from field: uint64 seq = 4;
329
+ */
330
+ seq: bigint;
331
+
332
+ /**
333
+ * Applied in order.
334
+ *
335
+ * @generated from field: repeated kusinta.iot.reporting.v1.ProblemTransition transitions = 1;
336
+ */
337
+ transitions: ProblemTransition[];
338
+
339
+ /**
340
+ * Set when this request is part of a snapshot of every open problem. Its transitions are
341
+ * then each problem's latest open state, and the api-server, once it holds the whole
342
+ * snapshot, closes every open problem the snapshot does not name.
343
+ *
344
+ * @generated from field: kusinta.iot.reporting.v1.SnapshotPart snapshot = 2;
345
+ */
346
+ snapshot?: SnapshotPart | undefined;
347
+ };
348
+
349
+ /**
350
+ * Describes the message kusinta.iot.reporting.v1.ReportProblemsRequest.
351
+ * Use `create(ReportProblemsRequestSchema)` to create a new message.
352
+ */
353
+ export declare const ReportProblemsRequestSchema: GenMessage<ReportProblemsRequest>;
354
+
355
+ /**
356
+ * @generated from message kusinta.iot.reporting.v1.TransitionAck
357
+ */
358
+ export declare type TransitionAck = Message<"kusinta.iot.reporting.v1.TransitionAck"> & {
359
+ /**
360
+ * @generated from field: string problem_id = 1;
361
+ */
362
+ problemId: string;
363
+
364
+ /**
365
+ * @generated from field: uint64 seq = 2;
366
+ */
367
+ seq: bigint;
368
+
369
+ /**
370
+ * @generated from field: kusinta.iot.reporting.v1.AckStatus status = 3;
371
+ */
372
+ status: AckStatus;
373
+ };
374
+
375
+ /**
376
+ * Describes the message kusinta.iot.reporting.v1.TransitionAck.
377
+ * Use `create(TransitionAckSchema)` to create a new message.
378
+ */
379
+ export declare const TransitionAckSchema: GenMessage<TransitionAck>;
380
+
381
+ /**
382
+ * @generated from message kusinta.iot.reporting.v1.ReportProblemsResponse
383
+ */
384
+ export declare type ReportProblemsResponse = Message<"kusinta.iot.reporting.v1.ReportProblemsResponse"> & {
385
+ /**
386
+ * One per transition of a request the api-server took in order, named by its key.
387
+ *
388
+ * @generated from field: repeated kusinta.iot.reporting.v1.TransitionAck acks = 1;
389
+ */
390
+ acks: TransitionAck[];
391
+
392
+ /**
393
+ * As ReportServiceReachResponse.applied_seq: whether the request was taken at all. A request
394
+ * above it was not, carries no acks, and is sent again.
395
+ *
396
+ * @generated from field: uint64 applied_seq = 3;
397
+ */
398
+ appliedSeq: bigint;
399
+
400
+ /**
401
+ * The gateway must connect afresh; see SnapshotPart.
402
+ *
403
+ * @generated from field: bool resync_required = 2;
404
+ */
405
+ resyncRequired: boolean;
406
+ };
407
+
408
+ /**
409
+ * Describes the message kusinta.iot.reporting.v1.ReportProblemsResponse.
410
+ * Use `create(ReportProblemsResponseSchema)` to create a new message.
411
+ */
412
+ export declare const ReportProblemsResponseSchema: GenMessage<ReportProblemsResponse>;
413
+
414
+ /**
415
+ * Which spaces one member of service staff reaches on this gateway: whom the api-server may
416
+ * show a problem to, by where the problem is.
417
+ *
418
+ * Sent for every member who stands to some space as service (access.v1.MembershipRelation),
419
+ * from their memberships alone. Never for a resident: where people live stays on the gateway.
420
+ * A member's own home is not left out of their reach, since a gap would show where they live.
421
+ * A user who is no longer service anywhere on the gateway is named in removed_user_ids.
422
+ *
423
+ * The administration of the gateway is not reported here; the administrator's own service
424
+ * memberships, if any, are, like anyone's. The api-server records who administers a gateway
425
+ * itself — the administrators of the organisation that owns it — and from when, and gives each
426
+ * administrator every space the gateway serves from that moment, applying a change of
427
+ * administrator, or of owning organisation, at once. A problem with no space the
428
+ * api-server holds — a device filed nowhere, a space not yet held or since removed — is shown
429
+ * only to the administrator. A problem about a connector or the gateway itself concerns no
430
+ * one's home, and is shown to the administrator and every member with any reach.
431
+ *
432
+ * @generated from message kusinta.iot.reporting.v1.ServiceReach
433
+ */
434
+ export declare type ServiceReach = Message<"kusinta.iot.reporting.v1.ServiceReach"> & {
435
+ /**
436
+ * As the token issuer mints it: the sub of the member's token.
437
+ *
438
+ * @generated from field: kusinta.iot.identity.v1.UserId user_id = 1;
439
+ */
440
+ userId?: UserId | undefined;
441
+
442
+ /**
443
+ * Every space the member reaches, the spaces beneath a reached space included. Replaces
444
+ * whatever the api-server held for this member on this gateway, so one member's reach is
445
+ * never split across requests or snapshot parts.
446
+ *
447
+ * @generated from field: repeated kusinta.iot.reporting.v1.ReachedSpace spaces = 3;
448
+ */
449
+ spaces: ReachedSpace[];
450
+ };
451
+
452
+ /**
453
+ * Describes the message kusinta.iot.reporting.v1.ServiceReach.
454
+ * Use `create(ServiceReachSchema)` to create a new message.
455
+ */
456
+ export declare const ServiceReachSchema: GenMessage<ServiceReach>;
457
+
458
+ /**
459
+ * One space a member reaches, and since when.
460
+ *
461
+ * @generated from message kusinta.iot.reporting.v1.ReachedSpace
462
+ */
463
+ export declare type ReachedSpace = Message<"kusinta.iot.reporting.v1.ReachedSpace"> & {
464
+ /**
465
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
466
+ */
467
+ spaceId?: SpaceId | undefined;
468
+
469
+ /**
470
+ * The quarter hour, rounded up, from which the member's reach to this space has been
471
+ * unbroken, as the gateway counts it. Given by the gateway, which saw any break, rather than
472
+ * inferred by the api-server from when reports arrived: a snapshot replaces what was queued,
473
+ * and would hide a break the gateway saw while offline.
474
+ *
475
+ * @generated from field: google.protobuf.Timestamp since = 2;
476
+ */
477
+ since?: Timestamp | undefined;
478
+ };
479
+
480
+ /**
481
+ * Describes the message kusinta.iot.reporting.v1.ReachedSpace.
482
+ * Use `create(ReachedSpaceSchema)` to create a new message.
483
+ */
484
+ export declare const ReachedSpaceSchema: GenMessage<ReachedSpace>;
485
+
486
+ /**
487
+ * @generated from message kusinta.iot.reporting.v1.ReportServiceReachRequest
488
+ */
489
+ export declare type ReportServiceReachRequest = Message<"kusinta.iot.reporting.v1.ReportServiceReachRequest"> & {
490
+ /**
491
+ * This concern's stream; see SnapshotPart.
492
+ *
493
+ * @generated from field: string stream_id = 5;
494
+ */
495
+ streamId: string;
496
+
497
+ /**
498
+ * The streams this one replaced; see SnapshotPart. Empty on the gateway's first.
499
+ *
500
+ * @generated from field: repeated string previous_stream_ids = 6;
501
+ */
502
+ previousStreamIds: string[];
503
+
504
+ /**
505
+ * The request's place on stream_id; see SnapshotPart. Applied in order, exactly once, so a
506
+ * late retry cannot restore reach since taken away.
507
+ *
508
+ * @generated from field: uint64 seq = 1;
509
+ */
510
+ seq: bigint;
511
+
512
+ /**
513
+ * @generated from field: repeated kusinta.iot.reporting.v1.ServiceReach reach = 2;
514
+ */
515
+ reach: ServiceReach[];
516
+
517
+ /**
518
+ * Members who reach nothing on this gateway as service any more. A member named here and in
519
+ * reach is removed.
520
+ *
521
+ * @generated from field: repeated kusinta.iot.identity.v1.UserId removed_user_ids = 3;
522
+ */
523
+ removedUserIds: UserId[];
524
+
525
+ /**
526
+ * Set when this request is part of a snapshot of every member's reach; members absent from
527
+ * a whole snapshot reach nothing.
528
+ *
529
+ * @generated from field: kusinta.iot.reporting.v1.SnapshotPart snapshot = 4;
530
+ */
531
+ snapshot?: SnapshotPart | undefined;
532
+ };
533
+
534
+ /**
535
+ * Describes the message kusinta.iot.reporting.v1.ReportServiceReachRequest.
536
+ * Use `create(ReportServiceReachRequestSchema)` to create a new message.
537
+ */
538
+ export declare const ReportServiceReachRequestSchema: GenMessage<ReportServiceReachRequest>;
539
+
540
+ /**
541
+ * @generated from message kusinta.iot.reporting.v1.ReportServiceReachResponse
542
+ */
543
+ export declare type ReportServiceReachResponse = Message<"kusinta.iot.reporting.v1.ReportServiceReachResponse"> & {
544
+ /**
545
+ * The seq the api-server has applied up to on the request's stream, a held snapshot part
546
+ * counting as applied. The gateway does not send any request up to it again; one above it
547
+ * was not applied, and is sent again.
548
+ *
549
+ * @generated from field: uint64 applied_seq = 1;
550
+ */
551
+ appliedSeq: bigint;
552
+
553
+ /**
554
+ * The gateway must connect afresh; see SnapshotPart.
555
+ *
556
+ * @generated from field: bool resync_required = 2;
557
+ */
558
+ resyncRequired: boolean;
559
+ };
560
+
561
+ /**
562
+ * Describes the message kusinta.iot.reporting.v1.ReportServiceReachResponse.
563
+ * Use `create(ReportServiceReachResponseSchema)` to create a new message.
564
+ */
565
+ export declare const ReportServiceReachResponseSchema: GenMessage<ReportServiceReachResponse>;
566
+
567
+ /**
568
+ * A space this gateway serves, enough for the api-server to say which spaces an offline
569
+ * gateway affects and to name where a problem is. The fields of space.v1.Space it needs and
570
+ * no more: who is filed on a space, and which devices are in it, stay on the gateway.
571
+ *
572
+ * name is the space's name as filed (space.v1.Space.name). For an apartment that is the
573
+ * building's own identifier for it, which the property owner gives and only staff change; the
574
+ * household's own name for its home (space.v1.Space.home_name) is never sent here, and never
575
+ * leaves the gateway. A name staff gave may still carry personal data ("Apt 101 – Andersson"),
576
+ * so it is stored by the api-server as personal data: something an operator's data protection
577
+ * assessment covers.
578
+ *
579
+ * @generated from message kusinta.iot.reporting.v1.ServedSpace
580
+ */
581
+ export declare type ServedSpace = Message<"kusinta.iot.reporting.v1.ServedSpace"> & {
582
+ /**
583
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
584
+ */
585
+ spaceId?: SpaceId | undefined;
586
+
587
+ /**
588
+ * @generated from field: kusinta.iot.common.v1.SpaceType space_type = 2;
589
+ */
590
+ spaceType: SpaceType;
591
+
592
+ /**
593
+ * @generated from field: string name = 3;
594
+ */
595
+ name: string;
596
+
597
+ /**
598
+ * Unset for a top-level space.
599
+ *
600
+ * @generated from field: kusinta.iot.identity.v1.SpaceId parent_space_id = 4;
601
+ */
602
+ parentSpaceId?: SpaceId | undefined;
603
+
604
+ /**
605
+ * As Space.floor: meaningful for a floor.
606
+ *
607
+ * @generated from field: int32 floor = 5;
608
+ */
609
+ floor: number;
610
+
611
+ /**
612
+ * The building's IANA time zone, as Space.time_zone: set on the building, so a time the
613
+ * api-server holds can be shown on the building's clock without a session to the gateway.
614
+ *
615
+ * @generated from field: string time_zone = 6;
616
+ */
617
+ timeZone: string;
618
+ };
619
+
620
+ /**
621
+ * Describes the message kusinta.iot.reporting.v1.ServedSpace.
622
+ * Use `create(ServedSpaceSchema)` to create a new message.
623
+ */
624
+ export declare const ServedSpaceSchema: GenMessage<ServedSpace>;
625
+
626
+ /**
627
+ * @generated from message kusinta.iot.reporting.v1.ReportServedSpacesRequest
628
+ */
629
+ export declare type ReportServedSpacesRequest = Message<"kusinta.iot.reporting.v1.ReportServedSpacesRequest"> & {
630
+ /**
631
+ * This concern's stream; see SnapshotPart.
632
+ *
633
+ * @generated from field: string stream_id = 5;
634
+ */
635
+ streamId: string;
636
+
637
+ /**
638
+ * The streams this one replaced; see SnapshotPart. Empty on the gateway's first.
639
+ *
640
+ * @generated from field: repeated string previous_stream_ids = 6;
641
+ */
642
+ previousStreamIds: string[];
643
+
644
+ /**
645
+ * As ReportServiceReachRequest.seq, on this concern's own stream.
646
+ *
647
+ * @generated from field: uint64 seq = 1;
648
+ */
649
+ seq: bigint;
650
+
651
+ /**
652
+ * Added or changed. Each replaces what the api-server held for that space.
653
+ *
654
+ * @generated from field: repeated kusinta.iot.reporting.v1.ServedSpace spaces = 2;
655
+ */
656
+ spaces: ServedSpace[];
657
+
658
+ /**
659
+ * No longer served: deleted, or moved off this gateway. A space named here and in spaces is
660
+ * removed.
661
+ *
662
+ * @generated from field: repeated kusinta.iot.identity.v1.SpaceId removed_space_ids = 3;
663
+ */
664
+ removedSpaceIds: SpaceId[];
665
+
666
+ /**
667
+ * Set when this request is part of a snapshot of every served space; spaces absent from a
668
+ * whole snapshot are no longer served.
669
+ *
670
+ * @generated from field: kusinta.iot.reporting.v1.SnapshotPart snapshot = 4;
671
+ */
672
+ snapshot?: SnapshotPart | undefined;
673
+ };
674
+
675
+ /**
676
+ * Describes the message kusinta.iot.reporting.v1.ReportServedSpacesRequest.
677
+ * Use `create(ReportServedSpacesRequestSchema)` to create a new message.
678
+ */
679
+ export declare const ReportServedSpacesRequestSchema: GenMessage<ReportServedSpacesRequest>;
680
+
681
+ /**
682
+ * @generated from message kusinta.iot.reporting.v1.ReportServedSpacesResponse
683
+ */
684
+ export declare type ReportServedSpacesResponse = Message<"kusinta.iot.reporting.v1.ReportServedSpacesResponse"> & {
685
+ /**
686
+ * As ReportServiceReachResponse.applied_seq.
687
+ *
688
+ * @generated from field: uint64 applied_seq = 1;
689
+ */
690
+ appliedSeq: bigint;
691
+
692
+ /**
693
+ * As ReportServiceReachResponse.resync_required.
694
+ *
695
+ * @generated from field: bool resync_required = 2;
696
+ */
697
+ resyncRequired: boolean;
698
+ };
699
+
700
+ /**
701
+ * Describes the message kusinta.iot.reporting.v1.ReportServedSpacesResponse.
702
+ * Use `create(ReportServedSpacesResponseSchema)` to create a new message.
703
+ */
704
+ export declare const ReportServedSpacesResponseSchema: GenMessage<ReportServedSpacesResponse>;
705
+
706
+ /**
707
+ * One member of this gateway: a user the gateway holds a role (access.v1.Role) or a space
708
+ * membership for, either. Whom the api-server lets connect to the gateway, and in which
709
+ * capacity. A user filed somewhere with no role is a member all the same: what they may do
710
+ * there is the gateway's to decide, and they cannot connect to find out unless reported.
711
+ *
712
+ * roles carries a member's service roles alone: ROLE_TECHNICIAN, ROLE_PROPERTY_OWNER and
713
+ * ROLE_GATEWAY_ADMIN. An empty list means no service role: a resident, or someone filed with
714
+ * no role. The gateway MUST NOT
715
+ * send ROLE_RESIDENT or ROLE_UNSPECIFIED here, and the api-server keeps no role but the
716
+ * three, each once. An entry, in members or removed_user_ids, with no user id is malformed,
717
+ * and the api-server skips it.
718
+ *
719
+ * What the api-server learns of a member with no service role is that they belong to this
720
+ * gateway, and from when to when — never which home, nor anything else ServiceReach
721
+ * withholds. A member's changes are sent at once, both ways, since joining is what lets a
722
+ * person connect and leaving is what revokes them. Roles do not follow relations
723
+ * (access.v1.MembershipRelation): a relation changing alone changes nothing reported here.
724
+ *
725
+ * Which organisation owns the gateway, and who its administrators are, is the api-server's own
726
+ * record, not the gateway's. The administration that comes with them is never taken away by this
727
+ * report — not by absence from a snapshot, not by removed_user_ids — and ends only when the
728
+ * person stops being an administrator of the owning organisation, or the gateway moves to
729
+ * another (signaling.v1.TransferOutcome). Any other administrator is a member reported with
730
+ * ROLE_GATEWAY_ADMIN, whom the api-server gives what it gives the organisation's, from
731
+ * administrator_since (see ServiceReach). Where an administrator of the organisation is also
732
+ * reported so, the api-server's record governs: their administration counts from the earlier of
733
+ * its own start and administrator_since. The api-server's own start for an organisation's
734
+ * administrator is never before the gateway came to that organisation, so a new owner learns
735
+ * nothing from before a transfer.
736
+ *
737
+ * A member here is a user the gateway holds a membership or a role for, and no one else. A
738
+ * vouched administrator (signaling.v1.VouchedAdministrators) is reported only when the gateway
739
+ * holds one of those for them — a membership, or ROLE_PROPERTY_OWNER they were given — and
740
+ * never with the ROLE_GATEWAY_ADMIN the vouched set and their token give. That the gateway
741
+ * lists them otherwise (webrtc.v1.MemberDetail.vouched_admin) does not make them a member of
742
+ * this report. After a wipe (signaling.v1.GatewayDeleted, WIPE) the gateway reports a snapshot
743
+ * with no members.
744
+ *
745
+ * @generated from message kusinta.iot.reporting.v1.GatewayMember
746
+ */
747
+ export declare type GatewayMember = Message<"kusinta.iot.reporting.v1.GatewayMember"> & {
748
+ /**
749
+ * As the token issuer mints it: the sub of the member's token.
750
+ *
751
+ * @generated from field: kusinta.iot.identity.v1.UserId user_id = 1;
752
+ */
753
+ userId?: UserId | undefined;
754
+
755
+ /**
756
+ * The member's service roles, each once; empty for a resident.
757
+ *
758
+ * @generated from field: repeated kusinta.iot.access.v1.Role roles = 2;
759
+ */
760
+ roles: Role[];
761
+
762
+ /**
763
+ * Set exactly when roles holds ROLE_GATEWAY_ADMIN: the quarter hour, rounded up, from
764
+ * which the member's administration of the gateway has been unbroken, as the gateway counts
765
+ * it. Given by the gateway, which saw any break, as ReachedSpace.since is. An administrator
766
+ * reported without it counts from the quarter hour, rounded up, at which the api-server
767
+ * applied the report, never earlier.
768
+ *
769
+ * @generated from field: google.protobuf.Timestamp administrator_since = 3;
770
+ */
771
+ administratorSince?: Timestamp | undefined;
772
+ };
773
+
774
+ /**
775
+ * Describes the message kusinta.iot.reporting.v1.GatewayMember.
776
+ * Use `create(GatewayMemberSchema)` to create a new message.
777
+ */
778
+ export declare const GatewayMemberSchema: GenMessage<GatewayMember>;
779
+
780
+ /**
781
+ * @generated from message kusinta.iot.reporting.v1.ReportMembersRequest
782
+ */
783
+ export declare type ReportMembersRequest = Message<"kusinta.iot.reporting.v1.ReportMembersRequest"> & {
784
+ /**
785
+ * This concern's stream; see SnapshotPart.
786
+ *
787
+ * @generated from field: string stream_id = 1;
788
+ */
789
+ streamId: string;
790
+
791
+ /**
792
+ * The streams this one replaced; see SnapshotPart. Empty on the gateway's first.
793
+ *
794
+ * @generated from field: repeated string previous_stream_ids = 2;
795
+ */
796
+ previousStreamIds: string[];
797
+
798
+ /**
799
+ * As ReportServiceReachRequest.seq, on this concern's own stream: applied in order,
800
+ * exactly once, so a late retry cannot restore a member since removed.
801
+ *
802
+ * @generated from field: uint64 seq = 3;
803
+ */
804
+ seq: bigint;
805
+
806
+ /**
807
+ * Added or changed. Each replaces what the api-server held for that member on this gateway.
808
+ *
809
+ * @generated from field: repeated kusinta.iot.reporting.v1.GatewayMember members = 4;
810
+ */
811
+ members: GatewayMember[];
812
+
813
+ /**
814
+ * No longer members of this gateway. A user named here and in members is removed.
815
+ *
816
+ * @generated from field: repeated kusinta.iot.identity.v1.UserId removed_user_ids = 5;
817
+ */
818
+ removedUserIds: UserId[];
819
+
820
+ /**
821
+ * Set when this request is part of a snapshot of every member; users absent from a whole
822
+ * snapshot are members no more.
823
+ *
824
+ * @generated from field: kusinta.iot.reporting.v1.SnapshotPart snapshot = 6;
825
+ */
826
+ snapshot?: SnapshotPart | undefined;
827
+ };
828
+
829
+ /**
830
+ * Describes the message kusinta.iot.reporting.v1.ReportMembersRequest.
831
+ * Use `create(ReportMembersRequestSchema)` to create a new message.
832
+ */
833
+ export declare const ReportMembersRequestSchema: GenMessage<ReportMembersRequest>;
834
+
835
+ /**
836
+ * @generated from message kusinta.iot.reporting.v1.ReportMembersResponse
837
+ */
838
+ export declare type ReportMembersResponse = Message<"kusinta.iot.reporting.v1.ReportMembersResponse"> & {
839
+ /**
840
+ * As ReportServiceReachResponse.applied_seq.
841
+ *
842
+ * @generated from field: uint64 applied_seq = 1;
843
+ */
844
+ appliedSeq: bigint;
845
+
846
+ /**
847
+ * As ReportServiceReachResponse.resync_required.
848
+ *
849
+ * @generated from field: bool resync_required = 2;
850
+ */
851
+ resyncRequired: boolean;
852
+ };
853
+
854
+ /**
855
+ * Describes the message kusinta.iot.reporting.v1.ReportMembersResponse.
856
+ * Use `create(ReportMembersResponseSchema)` to create a new message.
857
+ */
858
+ export declare const ReportMembersResponseSchema: GenMessage<ReportMembersResponse>;
859
+
860
+ /**
861
+ * Which invite secrets this gateway answers for, by hash alone (webrtc.v1 invite.proto
862
+ * gives the hash), so the api-server can route a redeem (signaling.v1.RedeemInvite) to the
863
+ * one gateway that can decide it. Nothing else of an invite leaves the gateway here — not
864
+ * its space, relation, address, creator or expiry — and the hash of a secret says nothing
865
+ * of the secret.
866
+ *
867
+ * A secret's hash is reported from when the secret is issued until it expires, used or not,
868
+ * so that a user who redeemed it can redeem again and be told what came of it
869
+ * (signaling.v1.RedeemOutcome). A revoke, and a resend for the old secrets, removes them at
870
+ * once; an expiry removes them at or soon after the moment, not necessarily to the second,
871
+ * and the gateway still answers INVALID for an expired secret meanwhile. Changes are sent
872
+ * at once.
873
+ *
874
+ * The api-server keeps the hashes of a gateway's current snapshot and changes only, drops
875
+ * them all with the gateway, and routes no redeem by a hash it does not hold.
876
+ *
877
+ * A gateway MUST NOT report more than 10000 hashes at once (two for each of the at most
878
+ * 5000 invites webrtc.v1 CreateInvite allows). The api-server MAY ignore hashes past that.
879
+ *
880
+ * @generated from message kusinta.iot.reporting.v1.ReportInviteRoutesRequest
881
+ */
882
+ export declare type ReportInviteRoutesRequest = Message<"kusinta.iot.reporting.v1.ReportInviteRoutesRequest"> & {
883
+ /**
884
+ * This concern's stream; see SnapshotPart.
885
+ *
886
+ * @generated from field: string stream_id = 1;
887
+ */
888
+ streamId: string;
889
+
890
+ /**
891
+ * The streams this one replaced; see SnapshotPart. Empty on the gateway's first.
892
+ *
893
+ * @generated from field: repeated string previous_stream_ids = 2;
894
+ */
895
+ previousStreamIds: string[];
896
+
897
+ /**
898
+ * As ReportServiceReachRequest.seq, on this concern's own stream.
899
+ *
900
+ * @generated from field: uint64 seq = 3;
901
+ */
902
+ seq: bigint;
903
+
904
+ /**
905
+ * Secret hashes (32 bytes each) this gateway answers for from now.
906
+ *
907
+ * @generated from field: repeated bytes secret_hashes = 4;
908
+ */
909
+ secretHashes: Uint8Array[];
910
+
911
+ /**
912
+ * Secret hashes it no longer answers for. A hash named here and in secret_hashes is
913
+ * removed.
914
+ *
915
+ * @generated from field: repeated bytes removed_secret_hashes = 5;
916
+ */
917
+ removedSecretHashes: Uint8Array[];
918
+
919
+ /**
920
+ * Set when this request is part of a snapshot of every hash; hashes absent from a whole
921
+ * snapshot are routed here no more.
922
+ *
923
+ * @generated from field: kusinta.iot.reporting.v1.SnapshotPart snapshot = 6;
924
+ */
925
+ snapshot?: SnapshotPart | undefined;
926
+ };
927
+
928
+ /**
929
+ * Describes the message kusinta.iot.reporting.v1.ReportInviteRoutesRequest.
930
+ * Use `create(ReportInviteRoutesRequestSchema)` to create a new message.
931
+ */
932
+ export declare const ReportInviteRoutesRequestSchema: GenMessage<ReportInviteRoutesRequest>;
933
+
934
+ /**
935
+ * @generated from message kusinta.iot.reporting.v1.ReportInviteRoutesResponse
936
+ */
937
+ export declare type ReportInviteRoutesResponse = Message<"kusinta.iot.reporting.v1.ReportInviteRoutesResponse"> & {
938
+ /**
939
+ * As ReportServiceReachResponse.applied_seq.
940
+ *
941
+ * @generated from field: uint64 applied_seq = 1;
942
+ */
943
+ appliedSeq: bigint;
944
+
945
+ /**
946
+ * As ReportServiceReachResponse.resync_required.
947
+ *
948
+ * @generated from field: bool resync_required = 2;
949
+ */
950
+ resyncRequired: boolean;
951
+ };
952
+
953
+ /**
954
+ * Describes the message kusinta.iot.reporting.v1.ReportInviteRoutesResponse.
955
+ * Use `create(ReportInviteRoutesResponseSchema)` to create a new message.
956
+ */
957
+ export declare const ReportInviteRoutesResponseSchema: GenMessage<ReportInviteRoutesResponse>;
958
+
959
+ /**
960
+ * What kind of problem is open. The device kinds, FLOOR_ZONE_UNCONTROLLED aside, mirror what
961
+ * service staff are given of a device (webrtc.v1.ServiceStatus: reachability, the battery
962
+ * flags, the ServiceFault values); a device signal added there is added here too.
963
+ *
964
+ * @generated from enum kusinta.iot.reporting.v1.ProblemKind
965
+ */
966
+ export enum ProblemKind {
967
+ /**
968
+ * @generated from enum value: PROBLEM_KIND_UNSPECIFIED = 0;
969
+ */
970
+ UNSPECIFIED = 0,
971
+
972
+ /**
973
+ * The device cannot be heard, as its connector judges it. Does not open, or open again,
974
+ * while its connector is settling: a connector problem open, or the settling time after
975
+ * one; see ClearReason. Closes CLEAR_REASON_RECOVERED only once the connector reports the
976
+ * device reachable again.
977
+ *
978
+ * @generated from enum value: PROBLEM_KIND_DEVICE_OFFLINE = 1;
979
+ */
980
+ DEVICE_OFFLINE = 1,
981
+
982
+ /**
983
+ * The device reports its battery low or critical.
984
+ *
985
+ * @generated from enum value: PROBLEM_KIND_BATTERY_LOW = 2;
986
+ */
987
+ BATTERY_LOW = 2,
988
+
989
+ /**
990
+ * The device reports that its battery must be replaced.
991
+ *
992
+ * @generated from enum value: PROBLEM_KIND_BATTERY_REPLACEMENT_NEEDED = 3;
993
+ */
994
+ BATTERY_REPLACEMENT_NEEDED = 3,
995
+
996
+ /**
997
+ * The device reports an error in its own operation.
998
+ *
999
+ * @generated from enum value: PROBLEM_KIND_DEVICE_ERROR = 4;
1000
+ */
1001
+ DEVICE_ERROR = 4,
1002
+
1003
+ /**
1004
+ * The device reports being tampered with: a casing opened, a mount removed.
1005
+ *
1006
+ * @generated from enum value: PROBLEM_KIND_DEVICE_TAMPER = 5;
1007
+ */
1008
+ DEVICE_TAMPER = 5,
1009
+
1010
+ /**
1011
+ * A connector's stream to the gateway is down. A connector problem (see ClearReason): while
1012
+ * it is open, no DEVICE_OFFLINE opens for the devices behind that connector, and those open
1013
+ * close as superseded by a connector problem (see ClearReason), one problem rather than one
1014
+ * per device. Closes with CLEAR_REASON_RECOVERED when the connector reconnects, or
1015
+ * CLEAR_REASON_NO_LONGER_REPORTED when the gateway stops tracking the connector.
1016
+ *
1017
+ * @generated from enum value: PROBLEM_KIND_CONNECTOR_OFFLINE = 6;
1018
+ */
1019
+ CONNECTOR_OFFLINE = 6,
1020
+
1021
+ /**
1022
+ * A connector is connected, but the backend it drives is failing: a central it cannot
1023
+ * reach, a network server answering with errors. Raised from the connector's own health
1024
+ * reports (connector.v1.BackendHealthReport); backend_failure carries the category, never
1025
+ * the connector's own detail. A connector problem, as CONNECTOR_OFFLINE is: while it is
1026
+ * open, no DEVICE_OFFLINE opens for the devices behind that connector, and those open close
1027
+ * as superseded by a connector problem (see ClearReason). Closes with
1028
+ * CLEAR_REASON_RECOVERED when the health is no longer FAILING,
1029
+ * CLEAR_REASON_SUPERSEDED_BY_CONNECTOR_OFFLINE when the connector's stream drops, a
1030
+ * CONNECTOR_OFFLINE opening in the same step, or
1031
+ * CLEAR_REASON_NO_LONGER_REPORTED when the gateway stops tracking the connector.
1032
+ *
1033
+ * @generated from enum value: PROBLEM_KIND_CONNECTOR_ERROR = 7;
1034
+ */
1035
+ CONNECTOR_ERROR = 7,
1036
+
1037
+ /**
1038
+ * Company-owned devices are paired with the gateway but filed in no space. A device a
1039
+ * resident owns is never counted. The count changes only at quarter-hour evaluations, and
1040
+ * opened_at and cleared_at are quarter hours, as for a device in a home, so the problem
1041
+ * cannot time what a resident does with a device.
1042
+ *
1043
+ * @generated from enum value: PROBLEM_KIND_UNFILED_DEVICES = 8;
1044
+ */
1045
+ UNFILED_DEVICES = 8,
1046
+
1047
+ /**
1048
+ * A window is open in a room whose heating it pauses. Raised only for a room in no home: in
1049
+ * a common area, or under a floor or building directly. Whether a window in a home is open
1050
+ * is the residents' alone, and the gateway never reports it: a room that leaves a home with
1051
+ * its window open raises this at the quarter hour it leaves, stamped with that quarter hour,
1052
+ * never with when the window opened.
1053
+ *
1054
+ * @generated from enum value: PROBLEM_KIND_WINDOW_OPEN = 9;
1055
+ */
1056
+ WINDOW_OPEN = 9,
1057
+
1058
+ /**
1059
+ * A floor zone bound to one of the device's outputs (heating.v1.FloorZone.output) is
1060
+ * uncontrolled — it has no room, or no control room — and so heats without control: an
1061
+ * uncontrolled zone is not driven, and a floor zone rests closed (heating.v1, UNCONTROLLED
1062
+ * ZONES). Opened by the gateway only once the zone has been uncontrolled for about an hour,
1063
+ * so that a zone left so for a step of commissioning raises nothing. One problem per device,
1064
+ * however many zones on its outputs are uncontrolled. Closes CLEAR_REASON_RECOVERED once
1065
+ * each of them has a control room again or has been removed, and
1066
+ * CLEAR_REASON_DEVICE_REMOVED with the device.
1067
+ *
1068
+ * A service signal: it names the device and where the device is filed (Problem.space_id),
1069
+ * as any device problem does, and nothing else — not the zone's rooms, not which of the two
1070
+ * it lacks, not who left it so, and no time finer than Problem allows for a device in a
1071
+ * home. Not part of
1072
+ * webrtc.v1.ServiceStatus; residents are told of it as
1073
+ * access.v1.SERVICE_SIGNAL_FLOOR_ZONE_UNCONTROLLED.
1074
+ *
1075
+ * @generated from enum value: PROBLEM_KIND_FLOOR_ZONE_UNCONTROLLED = 10;
1076
+ */
1077
+ FLOOR_ZONE_UNCONTROLLED = 10,
1078
+
1079
+ /**
1080
+ * The gateway's planning inputs (planning.v1) are stale, for a building whose inputs are on
1081
+ * (webrtc.v1 BUILDING PLANNING): its forecast is more than six hours old, or the next day's
1082
+ * prices are still missing at 16:00 in the bidding zone's own time, well after the
1083
+ * day-ahead market has cleared. Open while any such building's are. Building-level: it
1084
+ * names the gateway, never a home. Its planner meanwhile shifts no load past what it
1085
+ * holds, so nothing goes cold or unsafe while it is open.
1086
+ *
1087
+ * @generated from enum value: PROBLEM_KIND_PLANNING_INPUTS_STALE = 11;
1088
+ */
1089
+ PLANNING_INPUTS_STALE = 11,
1090
+ }
1091
+
1092
+ /**
1093
+ * Describes the enum kusinta.iot.reporting.v1.ProblemKind.
1094
+ */
1095
+ export declare const ProblemKindSchema: GenEnum<ProblemKind>;
1096
+
1097
+ /**
1098
+ * Why a problem closed.
1099
+ *
1100
+ * A connector problem is CONNECTOR_OFFLINE or CONNECTOR_ERROR, and at most one is open for a
1101
+ * connector at a time: one problem rather than one per device. While one is open, no
1102
+ * DEVICE_OFFLINE opens, or opens again, for the devices behind that connector, and the gateway
1103
+ * closes each DEVICE_OFFLINE of a device still reported behind it with the SUPERSEDED_* reason
1104
+ * naming the connector problem open as it closes it: at once for a device outside any home;
1105
+ * for a device in a home at the next quarter hour, so a receiver may hold both open until
1106
+ * then. If no connector problem is open by that quarter hour — it came and went — nothing is
1107
+ * sent, and the DEVICE_OFFLINE stays open, closing as below.
1108
+ *
1109
+ * A connector is settling while a connector problem of it is open, and for a settling time
1110
+ * after one ends, in which the connector and its devices report again; how long is the
1111
+ * gateway's own policy, but at least 2 minutes and at most 5 minutes after the connector
1112
+ * problem ended: time for the connector to state its health and report its devices'
1113
+ * reachability again (see connector.v1.BackendHealthReport). A device the connector has not
1114
+ * reported reachable by then is judged on what the gateway last heard of it. While it is
1115
+ * settling, no DEVICE_OFFLINE opens, or opens again, for its devices; a connector whose
1116
+ * problems keep recurring within its settling time keeps them from opening, and its connector
1117
+ * problems are what is reported. A DEVICE_OFFLINE closes CLEAR_REASON_RECOVERED only once the
1118
+ * connector reports the device reachable again, never for the mere absence of a report; it
1119
+ * closes with a SUPERSEDED_* reason as said above, and on a move, a removal or leaving what the
1120
+ * gateway reports as for any problem. Once its connector is no longer settling, the gateway
1121
+ * judges its devices afresh: a device still unreachable that has no DEVICE_OFFLINE open — one
1122
+ * closed as superseded or moved, one that started being reported or went unreachable meanwhile
1123
+ * — opens one, stamped as Problem says. So a device outside a home that stays unreachable
1124
+ * through an outage has its DEVICE_OFFLINE closed as superseded and a new one opened after it.
1125
+ *
1126
+ * The gateway closes a problem when it decides the clear — for a device in
1127
+ * a home, at the quarter hour — and a clear queued or sent again keeps the reason it was
1128
+ * given then. Times are as for any transition (see Problem): a device in a home is
1129
+ * stamped only with quarter hours, and no time crosses a home's boundary.
1130
+ *
1131
+ * When the gateway stops tracking a connector — when is the gateway's own policy — the
1132
+ * connector and the devices behind it stop being reported, and their open problems close
1133
+ * with NO_LONGER_REPORTED. A removed device's problems always close with DEVICE_REMOVED, even
1134
+ * when it also stops being reported; any other subject that stops being reported always
1135
+ * closes with NO_LONGER_REPORTED. Neither takes a SUPERSEDED_* reason, even while a connector
1136
+ * problem is open.
1137
+ *
1138
+ * @generated from enum kusinta.iot.reporting.v1.ClearReason
1139
+ */
1140
+ export enum ClearReason {
1141
+ /**
1142
+ * @generated from enum value: CLEAR_REASON_UNSPECIFIED = 0;
1143
+ */
1144
+ UNSPECIFIED = 0,
1145
+
1146
+ /**
1147
+ * The condition ended: the device was heard, its battery recovered or was replaced, the
1148
+ * connector came back, the window closed, the floor zone was given a control room or
1149
+ * removed.
1150
+ *
1151
+ * @generated from enum value: CLEAR_REASON_RECOVERED = 1;
1152
+ */
1153
+ RECOVERED = 1,
1154
+
1155
+ /**
1156
+ * The unfiled devices were filed.
1157
+ *
1158
+ * @generated from enum value: CLEAR_REASON_FILED = 2;
1159
+ */
1160
+ FILED = 2,
1161
+
1162
+ /**
1163
+ * The device was removed from the gateway. Every problem open on it closes with this,
1164
+ * never with a SUPERSEDED_* reason (see above).
1165
+ *
1166
+ * @generated from enum value: CLEAR_REASON_DEVICE_REMOVED = 3;
1167
+ */
1168
+ DEVICE_REMOVED = 3,
1169
+
1170
+ /**
1171
+ * The connector behind the device went offline. For a DEVICE_OFFLINE, and for a
1172
+ * CONNECTOR_ERROR whose connector's stream dropped; no other problem is superseded. See
1173
+ * above.
1174
+ *
1175
+ * @generated from enum value: CLEAR_REASON_SUPERSEDED_BY_CONNECTOR_OFFLINE = 4;
1176
+ */
1177
+ SUPERSEDED_BY_CONNECTOR_OFFLINE = 4,
1178
+
1179
+ /**
1180
+ * The problem's subject left what the gateway reports, though the condition may hold: a
1181
+ * device now owned by a resident, a room moved into a home, a connector the gateway has
1182
+ * stopped tracking and the devices behind it. A device handed to a resident, or a device or
1183
+ * room leaving with a move, is sent, and stamped, at the next quarter hour; anything else
1184
+ * as Problem says for its subject.
1185
+ * Never replaced by a SUPERSEDED_* reason (see above).
1186
+ *
1187
+ * @generated from enum value: CLEAR_REASON_NO_LONGER_REPORTED = 5;
1188
+ */
1189
+ NO_LONGER_REPORTED = 5,
1190
+
1191
+ /**
1192
+ * The subject moved into or out of a home. A problem that still holds opens again as a new
1193
+ * one at the same quarter hour — a DEVICE_OFFLINE only while its connector is not
1194
+ * settling (see above). A DEVICE_OFFLINE closes with a SUPERSEDED_* reason instead when a
1195
+ * connector problem of its connector is open as the gateway closes it (see above).
1196
+ *
1197
+ * @generated from enum value: CLEAR_REASON_MOVED = 6;
1198
+ */
1199
+ MOVED = 6,
1200
+
1201
+ /**
1202
+ * The backend of the connector behind the device is failing. For a DEVICE_OFFLINE only; no
1203
+ * other problem is superseded. See above.
1204
+ *
1205
+ * @generated from enum value: CLEAR_REASON_SUPERSEDED_BY_CONNECTOR_ERROR = 7;
1206
+ */
1207
+ SUPERSEDED_BY_CONNECTOR_ERROR = 7,
1208
+ }
1209
+
1210
+ /**
1211
+ * Describes the enum kusinta.iot.reporting.v1.ClearReason.
1212
+ */
1213
+ export declare const ClearReasonSchema: GenEnum<ClearReason>;
1214
+
1215
+ /**
1216
+ * What the api-server made of one transition.
1217
+ *
1218
+ * @generated from enum kusinta.iot.reporting.v1.AckStatus
1219
+ */
1220
+ export enum AckStatus {
1221
+ /**
1222
+ * @generated from enum value: ACK_STATUS_UNSPECIFIED = 0;
1223
+ */
1224
+ UNSPECIFIED = 0,
1225
+
1226
+ /**
1227
+ * Applied now.
1228
+ *
1229
+ * @generated from enum value: ACK_STATUS_APPLIED = 1;
1230
+ */
1231
+ APPLIED = 1,
1232
+
1233
+ /**
1234
+ * Already held, or overtaken by a later transition of the same problem; not applied.
1235
+ *
1236
+ * @generated from enum value: ACK_STATUS_DUPLICATE = 2;
1237
+ */
1238
+ DUPLICATE = 2,
1239
+
1240
+ /**
1241
+ * Not applied, and never will be: malformed, or for something this gateway may not report.
1242
+ * The gateway does not send it again. Never because of what the api-server holds of spaces —
1243
+ * one it does not hold, one since removed, one it still files elsewhere: the three concerns
1244
+ * are not ordered against each other, so a problem may run ahead of or behind its space, and
1245
+ * is kept (see ServiceReach for who sees it).
1246
+ *
1247
+ * @generated from enum value: ACK_STATUS_REJECTED = 3;
1248
+ */
1249
+ REJECTED = 3,
1250
+
1251
+ /**
1252
+ * Part of a snapshot not yet complete: received, to be applied with the last part.
1253
+ *
1254
+ * @generated from enum value: ACK_STATUS_HELD = 4;
1255
+ */
1256
+ HELD = 4,
1257
+ }
1258
+
1259
+ /**
1260
+ * Describes the enum kusinta.iot.reporting.v1.AckStatus.
1261
+ */
1262
+ export declare const AckStatusSchema: GenEnum<AckStatus>;
1263
+