@mhome/core-protocol 1.40.1 → 1.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -5,6 +5,15 @@ provider runtimes. Public `/app/*` contracts belong to
|
|
|
5
5
|
`mhome-app-facade-api`; this crate owns internal MWS, authentication, LLM,
|
|
6
6
|
Messaging normalization, Node runtime, and Storage contracts.
|
|
7
7
|
|
|
8
|
+
`messaging::IngressRedeem` carries a parsed identity code and a dedicated
|
|
9
|
+
`IdentityRedemptionContext`: event ID, receiving address, sender and optional
|
|
10
|
+
conversation display name. Redemption is independent of normalized message
|
|
11
|
+
content and its schema version. The receiver validates the context and authorizes
|
|
12
|
+
the registered account before consuming the code. External protocol 23 requires
|
|
13
|
+
Host and Core to use the dedicated context; cloud ingress must be upgraded with
|
|
14
|
+
the local receiver. There is no full-message redemption compatibility path. The shared wire example is
|
|
15
|
+
[`fixtures/messaging-redemption.json`](fixtures/messaging-redemption.json).
|
|
16
|
+
|
|
8
17
|
The additive [`client_identity`](contract/client-identity.md) contract separates
|
|
9
18
|
User and Space Client identity, installation ID and enrollment ID. Runtime ingress
|
|
10
19
|
has not yet cut over to this contract; operation authorization remains separate.
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"state.cameraMotion"
|
|
39
39
|
],
|
|
40
40
|
"health": "ready",
|
|
41
|
-
"
|
|
41
|
+
"connectionId": "connection-1",
|
|
42
42
|
"resolutionStatus": "ready"
|
|
43
43
|
}
|
|
44
44
|
],
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"source": "onvif"
|
|
51
51
|
}
|
|
52
52
|
],
|
|
53
|
-
"
|
|
53
|
+
"connections": [],
|
|
54
54
|
"cameraSettings": [
|
|
55
55
|
{
|
|
56
56
|
"deviceId": "camera-1",
|
|
@@ -59,7 +59,9 @@
|
|
|
59
59
|
"watchMode": "off",
|
|
60
60
|
"objectDetectionMode": "off",
|
|
61
61
|
"personDetectionMode": "off",
|
|
62
|
-
"recordMode": "off"
|
|
62
|
+
"recordMode": "off",
|
|
63
|
+
"preRollSeconds": 8,
|
|
64
|
+
"postRollSeconds": 15
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
]
|
|
@@ -78,7 +80,8 @@
|
|
|
78
80
|
"deviceIds": [
|
|
79
81
|
"camera-1"
|
|
80
82
|
],
|
|
81
|
-
"changed": true
|
|
83
|
+
"changed": true,
|
|
84
|
+
"connectionId": "connection-1"
|
|
82
85
|
}
|
|
83
86
|
},
|
|
84
87
|
{
|
|
@@ -90,7 +93,9 @@
|
|
|
90
93
|
"watchMode": "off",
|
|
91
94
|
"objectDetectionMode": "off",
|
|
92
95
|
"personDetectionMode": "off",
|
|
93
|
-
"recordMode": "off"
|
|
96
|
+
"recordMode": "off",
|
|
97
|
+
"preRollSeconds": 8,
|
|
98
|
+
"postRollSeconds": 15
|
|
94
99
|
}
|
|
95
100
|
}
|
|
96
101
|
},
|
|
@@ -103,26 +108,66 @@
|
|
|
103
108
|
}
|
|
104
109
|
},
|
|
105
110
|
{
|
|
106
|
-
"name": "
|
|
111
|
+
"name": "connection-detail-request",
|
|
107
112
|
"value": {
|
|
108
|
-
"
|
|
113
|
+
"connectionId": "ha-1"
|
|
109
114
|
}
|
|
110
115
|
},
|
|
111
116
|
{
|
|
112
117
|
"name": "connected-empty-ha",
|
|
113
118
|
"value": {
|
|
114
119
|
"providers": [],
|
|
115
|
-
"
|
|
120
|
+
"connections": [
|
|
116
121
|
{
|
|
117
122
|
"id": "ha-1",
|
|
118
123
|
"name": "http://homeassistant.local:8123",
|
|
119
|
-
"deviceCount": 0
|
|
124
|
+
"deviceCount": 0,
|
|
125
|
+
"provider": "home_assistant",
|
|
126
|
+
"revision": 1
|
|
120
127
|
}
|
|
121
128
|
],
|
|
122
129
|
"devices": [],
|
|
123
130
|
"onlineStates": [],
|
|
124
131
|
"cameraSettings": []
|
|
125
132
|
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "recording without preroll or postroll",
|
|
136
|
+
"value": {
|
|
137
|
+
"deviceId": "camera-1",
|
|
138
|
+
"settings": {
|
|
139
|
+
"preRollSeconds": 0,
|
|
140
|
+
"postRollSeconds": 0
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"name": "recording retention limits",
|
|
146
|
+
"value": {
|
|
147
|
+
"deviceId": "camera-1",
|
|
148
|
+
"settings": {
|
|
149
|
+
"preRollSeconds": 120,
|
|
150
|
+
"postRollSeconds": 300
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "update only preroll",
|
|
156
|
+
"value": {
|
|
157
|
+
"deviceId": "camera-1",
|
|
158
|
+
"settings": {
|
|
159
|
+
"preRollSeconds": 60
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"name": "update only postroll",
|
|
165
|
+
"value": {
|
|
166
|
+
"deviceId": "camera-1",
|
|
167
|
+
"settings": {
|
|
168
|
+
"postRollSeconds": 30
|
|
169
|
+
}
|
|
170
|
+
}
|
|
126
171
|
}
|
|
127
172
|
],
|
|
128
173
|
"invalid": [
|
|
@@ -143,12 +188,12 @@
|
|
|
143
188
|
"name": "Front",
|
|
144
189
|
"capabilities": [],
|
|
145
190
|
"health": "unknown",
|
|
146
|
-
"
|
|
191
|
+
"connectionId": "connection-1",
|
|
147
192
|
"resolutionStatus": "ready"
|
|
148
193
|
}
|
|
149
194
|
],
|
|
150
195
|
"onlineStates": [],
|
|
151
|
-
"
|
|
196
|
+
"connections": [],
|
|
152
197
|
"cameraSettings": []
|
|
153
198
|
}
|
|
154
199
|
},
|
|
@@ -162,7 +207,7 @@
|
|
|
162
207
|
"capabilities": [],
|
|
163
208
|
"health": "ready",
|
|
164
209
|
"sourceUid": "secret",
|
|
165
|
-
"
|
|
210
|
+
"connectionId": "connection-1",
|
|
166
211
|
"resolutionStatus": "ready"
|
|
167
212
|
}
|
|
168
213
|
],
|
|
@@ -184,6 +229,137 @@
|
|
|
184
229
|
"watchMode": "on"
|
|
185
230
|
}
|
|
186
231
|
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "preRollSeconds null",
|
|
235
|
+
"value": {
|
|
236
|
+
"deviceId": "camera-1",
|
|
237
|
+
"settings": {
|
|
238
|
+
"preRollSeconds": null
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"name": "preRollSeconds negative",
|
|
244
|
+
"value": {
|
|
245
|
+
"deviceId": "camera-1",
|
|
246
|
+
"settings": {
|
|
247
|
+
"preRollSeconds": -1
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"name": "preRollSeconds fractional",
|
|
253
|
+
"value": {
|
|
254
|
+
"deviceId": "camera-1",
|
|
255
|
+
"settings": {
|
|
256
|
+
"preRollSeconds": 1.5
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"name": "preRollSeconds string",
|
|
262
|
+
"value": {
|
|
263
|
+
"deviceId": "camera-1",
|
|
264
|
+
"settings": {
|
|
265
|
+
"preRollSeconds": "15"
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"name": "preRollSeconds above limit",
|
|
271
|
+
"value": {
|
|
272
|
+
"deviceId": "camera-1",
|
|
273
|
+
"settings": {
|
|
274
|
+
"preRollSeconds": 121
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"name": "settings snapshot missing preRollSeconds",
|
|
280
|
+
"value": {
|
|
281
|
+
"deviceId": "camera-1",
|
|
282
|
+
"revision": 1,
|
|
283
|
+
"settings": {
|
|
284
|
+
"watchMode": "off",
|
|
285
|
+
"objectDetectionMode": "off",
|
|
286
|
+
"personDetectionMode": "off",
|
|
287
|
+
"recordMode": "off",
|
|
288
|
+
"postRollSeconds": 15
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"name": "postRollSeconds null",
|
|
294
|
+
"value": {
|
|
295
|
+
"deviceId": "camera-1",
|
|
296
|
+
"settings": {
|
|
297
|
+
"postRollSeconds": null
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"name": "postRollSeconds negative",
|
|
303
|
+
"value": {
|
|
304
|
+
"deviceId": "camera-1",
|
|
305
|
+
"settings": {
|
|
306
|
+
"postRollSeconds": -1
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"name": "postRollSeconds fractional",
|
|
312
|
+
"value": {
|
|
313
|
+
"deviceId": "camera-1",
|
|
314
|
+
"settings": {
|
|
315
|
+
"postRollSeconds": 1.5
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"name": "postRollSeconds string",
|
|
321
|
+
"value": {
|
|
322
|
+
"deviceId": "camera-1",
|
|
323
|
+
"settings": {
|
|
324
|
+
"postRollSeconds": "15"
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"name": "postRollSeconds above limit",
|
|
330
|
+
"value": {
|
|
331
|
+
"deviceId": "camera-1",
|
|
332
|
+
"settings": {
|
|
333
|
+
"postRollSeconds": 301
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"name": "settings snapshot missing postRollSeconds",
|
|
339
|
+
"value": {
|
|
340
|
+
"deviceId": "camera-1",
|
|
341
|
+
"revision": 1,
|
|
342
|
+
"settings": {
|
|
343
|
+
"watchMode": "off",
|
|
344
|
+
"objectDetectionMode": "off",
|
|
345
|
+
"personDetectionMode": "off",
|
|
346
|
+
"recordMode": "off",
|
|
347
|
+
"preRollSeconds": 8
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"name": "old source request",
|
|
353
|
+
"value": {
|
|
354
|
+
"sourceId": "ha-1"
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "disconnect without valid revision",
|
|
359
|
+
"value": {
|
|
360
|
+
"connectionId": "connection-1",
|
|
361
|
+
"expectedRevision": 0
|
|
362
|
+
}
|
|
187
363
|
}
|
|
188
364
|
]
|
|
189
365
|
}
|
package/manifest/core.v1.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest": "mhome.core.v1",
|
|
3
|
-
"contractVersion": "1.
|
|
3
|
+
"contractVersion": "1.44.0",
|
|
4
4
|
"protocols": {
|
|
5
5
|
"agentGateway": {
|
|
6
6
|
"submitTarget": "/agent/submit",
|
|
@@ -30,13 +30,16 @@
|
|
|
30
30
|
"routes": {
|
|
31
31
|
"deviceList": "device/list",
|
|
32
32
|
"managementSnapshot": "management/snapshot",
|
|
33
|
-
"deviceRemove": "device/remove",
|
|
34
|
-
"sourceRemove": "source/remove",
|
|
35
33
|
"deviceSettingsGet": "device/settings/get",
|
|
36
|
-
"deviceSettingsUpdate": "device/settings/update"
|
|
34
|
+
"deviceSettingsUpdate": "device/settings/update",
|
|
35
|
+
"providerList": "provider/list",
|
|
36
|
+
"connectionList": "connection/list",
|
|
37
|
+
"connectionDetail": "connection/detail",
|
|
38
|
+
"connectionDisconnect": "connection/disconnect"
|
|
37
39
|
},
|
|
38
40
|
"flows": {
|
|
39
|
-
"
|
|
41
|
+
"connectionCreate": "connection.create",
|
|
42
|
+
"connectionReconfigure": "connection.reconfigure"
|
|
40
43
|
}
|
|
41
44
|
},
|
|
42
45
|
"audioBridgePlugin": {
|
|
@@ -49,7 +52,6 @@
|
|
|
49
52
|
"deviceRefresh": "device/refresh",
|
|
50
53
|
"devicePair": "device/pair",
|
|
51
54
|
"deviceUnpair": "device/unpair",
|
|
52
|
-
"deviceTest": "device/test",
|
|
53
55
|
"deviceListenSet": "device/listen",
|
|
54
56
|
"smartSpeakerSnapshot": "smart-speaker/snapshot",
|
|
55
57
|
"smartSpeakerCreate": "smart-speaker/create",
|
|
@@ -66,7 +68,7 @@
|
|
|
66
68
|
"version": "storage.v2"
|
|
67
69
|
},
|
|
68
70
|
"hostDelivery": {
|
|
69
|
-
"externalProtocolVersion":
|
|
71
|
+
"externalProtocolVersion": 23,
|
|
70
72
|
"requestKind": "deliveryRequested",
|
|
71
73
|
"connectionControlKind": "connectionControlRequested",
|
|
72
74
|
"acceptanceBoundaries": [
|
package/package.json
CHANGED
package/protocol.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"$ref": "#/$defs/deviceListResponse"
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
|
-
"$ref": "#/$defs/
|
|
22
|
+
"$ref": "#/$defs/connectionMutationResponse"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"$ref": "#/$defs/deviceSettingsResponse"
|
|
@@ -28,7 +28,19 @@
|
|
|
28
28
|
"$ref": "#/$defs/errorResponse"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"$ref": "#/$defs/
|
|
31
|
+
"$ref": "#/$defs/connectionIdRequest"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"$ref": "#/$defs/connectionDisconnectRequest"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"$ref": "#/$defs/connectionListResponse"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"$ref": "#/$defs/providerListResponse"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"$ref": "#/$defs/connectionDetailResponse"
|
|
32
44
|
}
|
|
33
45
|
],
|
|
34
46
|
"$defs": {
|
|
@@ -82,7 +94,7 @@
|
|
|
82
94
|
"name",
|
|
83
95
|
"capabilities",
|
|
84
96
|
"health",
|
|
85
|
-
"
|
|
97
|
+
"connectionId",
|
|
86
98
|
"resolutionStatus"
|
|
87
99
|
],
|
|
88
100
|
"properties": {
|
|
@@ -118,11 +130,8 @@
|
|
|
118
130
|
"type": "string",
|
|
119
131
|
"minLength": 1
|
|
120
132
|
},
|
|
121
|
-
"
|
|
122
|
-
"type":
|
|
123
|
-
"string",
|
|
124
|
-
"null"
|
|
125
|
-
],
|
|
133
|
+
"connectionId": {
|
|
134
|
+
"type": "string",
|
|
126
135
|
"minLength": 1
|
|
127
136
|
},
|
|
128
137
|
"resolutionStatus": {
|
|
@@ -173,7 +182,7 @@
|
|
|
173
182
|
"devices",
|
|
174
183
|
"onlineStates",
|
|
175
184
|
"cameraSettings",
|
|
176
|
-
"
|
|
185
|
+
"connections"
|
|
177
186
|
],
|
|
178
187
|
"properties": {
|
|
179
188
|
"providers": {
|
|
@@ -194,10 +203,10 @@
|
|
|
194
203
|
"$ref": "#/$defs/onlineStateObservation"
|
|
195
204
|
}
|
|
196
205
|
},
|
|
197
|
-
"
|
|
206
|
+
"connections": {
|
|
198
207
|
"type": "array",
|
|
199
208
|
"items": {
|
|
200
|
-
"$ref": "#/$defs/
|
|
209
|
+
"$ref": "#/$defs/cameraConnection"
|
|
201
210
|
}
|
|
202
211
|
},
|
|
203
212
|
"cameraSettings": {
|
|
@@ -231,11 +240,12 @@
|
|
|
231
240
|
},
|
|
232
241
|
"additionalProperties": false
|
|
233
242
|
},
|
|
234
|
-
"
|
|
243
|
+
"connectionMutationResponse": {
|
|
235
244
|
"type": "object",
|
|
236
245
|
"required": [
|
|
237
246
|
"deviceIds",
|
|
238
|
-
"changed"
|
|
247
|
+
"changed",
|
|
248
|
+
"connectionId"
|
|
239
249
|
],
|
|
240
250
|
"properties": {
|
|
241
251
|
"deviceIds": {
|
|
@@ -248,6 +258,10 @@
|
|
|
248
258
|
},
|
|
249
259
|
"changed": {
|
|
250
260
|
"type": "boolean"
|
|
261
|
+
},
|
|
262
|
+
"connectionId": {
|
|
263
|
+
"type": "string",
|
|
264
|
+
"minLength": 1
|
|
251
265
|
}
|
|
252
266
|
},
|
|
253
267
|
"additionalProperties": false
|
|
@@ -274,25 +288,27 @@
|
|
|
274
288
|
},
|
|
275
289
|
"additionalProperties": false
|
|
276
290
|
},
|
|
277
|
-
"
|
|
291
|
+
"connectionIdRequest": {
|
|
278
292
|
"type": "object",
|
|
279
293
|
"required": [
|
|
280
|
-
"
|
|
294
|
+
"connectionId"
|
|
281
295
|
],
|
|
282
296
|
"properties": {
|
|
283
|
-
"
|
|
297
|
+
"connectionId": {
|
|
284
298
|
"type": "string",
|
|
285
299
|
"minLength": 1
|
|
286
300
|
}
|
|
287
301
|
},
|
|
288
302
|
"additionalProperties": false
|
|
289
303
|
},
|
|
290
|
-
"
|
|
304
|
+
"cameraConnection": {
|
|
291
305
|
"type": "object",
|
|
292
306
|
"required": [
|
|
293
307
|
"id",
|
|
294
308
|
"name",
|
|
295
|
-
"deviceCount"
|
|
309
|
+
"deviceCount",
|
|
310
|
+
"provider",
|
|
311
|
+
"revision"
|
|
296
312
|
],
|
|
297
313
|
"properties": {
|
|
298
314
|
"id": {
|
|
@@ -318,6 +334,14 @@
|
|
|
318
334
|
"string",
|
|
319
335
|
"null"
|
|
320
336
|
]
|
|
337
|
+
},
|
|
338
|
+
"provider": {
|
|
339
|
+
"type": "string",
|
|
340
|
+
"minLength": 1
|
|
341
|
+
},
|
|
342
|
+
"revision": {
|
|
343
|
+
"type": "integer",
|
|
344
|
+
"minimum": 1
|
|
321
345
|
}
|
|
322
346
|
},
|
|
323
347
|
"additionalProperties": false
|
|
@@ -348,6 +372,16 @@
|
|
|
348
372
|
"off",
|
|
349
373
|
"event"
|
|
350
374
|
]
|
|
375
|
+
},
|
|
376
|
+
"preRollSeconds": {
|
|
377
|
+
"type": "integer",
|
|
378
|
+
"minimum": 0,
|
|
379
|
+
"maximum": 120
|
|
380
|
+
},
|
|
381
|
+
"postRollSeconds": {
|
|
382
|
+
"type": "integer",
|
|
383
|
+
"minimum": 0,
|
|
384
|
+
"maximum": 300
|
|
351
385
|
}
|
|
352
386
|
},
|
|
353
387
|
"additionalProperties": false,
|
|
@@ -355,7 +389,9 @@
|
|
|
355
389
|
"watchMode",
|
|
356
390
|
"objectDetectionMode",
|
|
357
391
|
"personDetectionMode",
|
|
358
|
-
"recordMode"
|
|
392
|
+
"recordMode",
|
|
393
|
+
"preRollSeconds",
|
|
394
|
+
"postRollSeconds"
|
|
359
395
|
]
|
|
360
396
|
},
|
|
361
397
|
"cameraSettingsPatch": {
|
|
@@ -384,6 +420,16 @@
|
|
|
384
420
|
"off",
|
|
385
421
|
"event"
|
|
386
422
|
]
|
|
423
|
+
},
|
|
424
|
+
"preRollSeconds": {
|
|
425
|
+
"type": "integer",
|
|
426
|
+
"minimum": 0,
|
|
427
|
+
"maximum": 120
|
|
428
|
+
},
|
|
429
|
+
"postRollSeconds": {
|
|
430
|
+
"type": "integer",
|
|
431
|
+
"minimum": 0,
|
|
432
|
+
"maximum": 300
|
|
387
433
|
}
|
|
388
434
|
},
|
|
389
435
|
"additionalProperties": false,
|
|
@@ -427,6 +473,87 @@
|
|
|
427
473
|
}
|
|
428
474
|
},
|
|
429
475
|
"additionalProperties": false
|
|
476
|
+
},
|
|
477
|
+
"connectionDisconnectRequest": {
|
|
478
|
+
"type": "object",
|
|
479
|
+
"required": [
|
|
480
|
+
"connectionId",
|
|
481
|
+
"expectedRevision"
|
|
482
|
+
],
|
|
483
|
+
"properties": {
|
|
484
|
+
"connectionId": {
|
|
485
|
+
"type": "string",
|
|
486
|
+
"minLength": 1
|
|
487
|
+
},
|
|
488
|
+
"expectedRevision": {
|
|
489
|
+
"type": "integer",
|
|
490
|
+
"minimum": 1
|
|
491
|
+
},
|
|
492
|
+
"expectedDeviceIds": {
|
|
493
|
+
"type": "array",
|
|
494
|
+
"items": {
|
|
495
|
+
"type": "string"
|
|
496
|
+
},
|
|
497
|
+
"uniqueItems": true
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
"additionalProperties": false
|
|
501
|
+
},
|
|
502
|
+
"connectionListResponse": {
|
|
503
|
+
"type": "object",
|
|
504
|
+
"required": [
|
|
505
|
+
"connections"
|
|
506
|
+
],
|
|
507
|
+
"properties": {
|
|
508
|
+
"connections": {
|
|
509
|
+
"type": "array",
|
|
510
|
+
"items": {
|
|
511
|
+
"$ref": "#/$defs/cameraConnection"
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
"additionalProperties": false
|
|
516
|
+
},
|
|
517
|
+
"providerListResponse": {
|
|
518
|
+
"type": "object",
|
|
519
|
+
"required": [
|
|
520
|
+
"providers"
|
|
521
|
+
],
|
|
522
|
+
"properties": {
|
|
523
|
+
"providers": {
|
|
524
|
+
"type": "array",
|
|
525
|
+
"items": {
|
|
526
|
+
"$ref": "#/$defs/providerCatalogItem"
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
},
|
|
530
|
+
"additionalProperties": false
|
|
531
|
+
},
|
|
532
|
+
"connectionDetailResponse": {
|
|
533
|
+
"type": "object",
|
|
534
|
+
"required": [
|
|
535
|
+
"connection",
|
|
536
|
+
"devices"
|
|
537
|
+
],
|
|
538
|
+
"properties": {
|
|
539
|
+
"connection": {
|
|
540
|
+
"anyOf": [
|
|
541
|
+
{
|
|
542
|
+
"$ref": "#/$defs/cameraConnection"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"type": "null"
|
|
546
|
+
}
|
|
547
|
+
]
|
|
548
|
+
},
|
|
549
|
+
"devices": {
|
|
550
|
+
"type": "array",
|
|
551
|
+
"items": {
|
|
552
|
+
"$ref": "#/$defs/cameraDevice"
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
"additionalProperties": false
|
|
430
557
|
}
|
|
431
558
|
}
|
|
432
559
|
}
|