@kusinta/iot-schema 0.2.0-beta.3 → 0.2.0-beta.30

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