@camstack/addon-provider-hikvision 1.2.20 → 1.2.21

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 (3) hide show
  1. package/dist/addon.js +1844 -19
  2. package/dist/addon.mjs +1844 -19
  3. package/package.json +1 -1
package/dist/addon.mjs CHANGED
@@ -3005,6 +3005,9 @@ function handlePipeResult(left, next, ctx) {
3005
3005
  fallback: left.fallback
3006
3006
  }, ctx);
3007
3007
  }
3008
+ var $ZodPreprocess = /*@__PURE__*/ $constructor("$ZodPreprocess", (inst, def) => {
3009
+ $ZodPipe.init(inst, def);
3010
+ });
3008
3011
  var $ZodReadonly = /*@__PURE__*/ $constructor("$ZodReadonly", (inst, def) => {
3009
3012
  $ZodType.init(inst, def);
3010
3013
  defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues);
@@ -5190,6 +5193,10 @@ function pipe(in_, out) {
5190
5193
  out
5191
5194
  });
5192
5195
  }
5196
+ var ZodPreprocess = /*@__PURE__*/ $constructor("ZodPreprocess", (inst, def) => {
5197
+ ZodPipe.init(inst, def);
5198
+ $ZodPreprocess.init(inst, def);
5199
+ });
5193
5200
  var ZodReadonly = /*@__PURE__*/ $constructor("ZodReadonly", (inst, def) => {
5194
5201
  $ZodReadonly.init(inst, def);
5195
5202
  ZodType.init(inst, def);
@@ -5248,6 +5255,13 @@ function _instanceof(cls, params = {}) {
5248
5255
  };
5249
5256
  return inst;
5250
5257
  }
5258
+ function preprocess(fn, schema) {
5259
+ return new ZodPreprocess({
5260
+ type: "pipe",
5261
+ in: transform(fn),
5262
+ out: schema
5263
+ });
5264
+ }
5251
5265
  //#endregion
5252
5266
  //#region ../../node_modules/zod/v4/classic/compat.js
5253
5267
  /** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */
@@ -15687,7 +15701,87 @@ var MethodAccessSchema = _enum([
15687
15701
  var AllowedProviderSchema = union([literal("*"), array(string())]);
15688
15702
  var AllowedDevicesSchema = record(string(), union([literal("*"), array(string())]));
15689
15703
  var CapScopeSchema = _enum(["device", "system"]);
15690
- var TokenScopeSchema = discriminatedUnion("type", [
15704
+ /**
15705
+ * DeviceSelector (scope model v3 — 2026-08-12).
15706
+ *
15707
+ * A `device` grant no longer carries a frozen list of deviceIds. It carries
15708
+ * a SELECTOR the matcher resolves against the live fleet, so the grant can be
15709
+ * DYNAMIC: a `types:['camera']` selector automatically covers a camera added
15710
+ * AFTER the grant was minted — no re-grant, no re-login.
15711
+ *
15712
+ * - `all` — every device in the deployment. The broad viewer/operator
15713
+ * lever without a `category` grant (a `category` grant also covers device
15714
+ * caps that carry no deviceId; `all` is specifically the device set).
15715
+ * - `ids` — an explicit deviceId list. This is what a v2 `device:[…]`
15716
+ * grant migrates to (see {@link TokenScopeSchema}); STATIC — a new camera
15717
+ * is NOT covered until the grant is edited.
15718
+ * - `types` — every device of a `DeviceType` (e.g. every `camera`).
15719
+ * DYNAMIC. A device that changes type, or a new device of the type,
15720
+ * re-resolves on the next request.
15721
+ * - `locations` — every device whose operator-assigned `location` label is
15722
+ * in the set (e.g. "Garden", "Front door"). DYNAMIC. A device with a
15723
+ * null/unset location matches NO `locations` selector.
15724
+ */
15725
+ var DeviceSelectorSchema = discriminatedUnion("kind", [
15726
+ object({ kind: literal("all") }),
15727
+ object({
15728
+ kind: literal("ids"),
15729
+ ids: array(number().int()).min(1)
15730
+ }),
15731
+ object({
15732
+ kind: literal("types"),
15733
+ types: array(_enum(DeviceType)).min(1)
15734
+ }),
15735
+ object({
15736
+ kind: literal("locations"),
15737
+ locations: array(string().min(1)).min(1)
15738
+ })
15739
+ ]);
15740
+ var DeviceTokenScopeSchema = object({
15741
+ type: literal("device"),
15742
+ /** The device SET this grant covers — resolved against the live fleet. */
15743
+ selector: DeviceSelectorSchema,
15744
+ access: array(MethodAccessSchema).min(1),
15745
+ /**
15746
+ * Whether a grant on a PARENT device transparently covers its accessory
15747
+ * CHILDREN (siren / floodlight / PIR) via the persisted-parentage walk.
15748
+ * Direction is parent → children ONLY.
15749
+ *
15750
+ * Absent → the matcher DERIVES it from the access flavour: `view`
15751
+ * inherits (a camera viewer sees the camera's accessories), `create` /
15752
+ * `delete` do NOT (actuating/removing a child is an explicit act the
15753
+ * operator must grant on the child, not inherit from the parent). Set it
15754
+ * explicitly to override that default per grant.
15755
+ */
15756
+ includeLinked: boolean().optional()
15757
+ });
15758
+ /**
15759
+ * v2 → v3 lazy migration. A pre-v3 `device` grant carried
15760
+ * `targets: string[]` (stringified deviceIds); it rewrites to the equivalent
15761
+ * `selector: {kind:'ids', ids}`. Applied as a `preprocess` so it runs on
15762
+ * EVERY parse path — stored records AND the JWT-carried scope arrays
15763
+ * normalised at the request boundary ({@link normalizeTokenScopes} in
15764
+ * `device-selector.ts`). Chosen over a one-time DB migration because a
15765
+ * migration cannot reach a JWT already in a client's hands; parse-time
15766
+ * migration covers both without a flag day. No cast — the raw object is read
15767
+ * through `Reflect.get` (its static type is `unknown`).
15768
+ */
15769
+ function migrateLegacyTokenScope(raw) {
15770
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw)) return raw;
15771
+ if (Reflect.get(raw, "type") !== "device") return raw;
15772
+ if (Reflect.get(raw, "selector") !== void 0) return raw;
15773
+ const targets = Reflect.get(raw, "targets");
15774
+ if (!Array.isArray(targets)) return raw;
15775
+ return {
15776
+ type: "device",
15777
+ selector: {
15778
+ kind: "ids",
15779
+ ids: targets.map((t) => typeof t === "string" ? Number(t) : t).filter((n) => typeof n === "number" && Number.isInteger(n))
15780
+ },
15781
+ access: Reflect.get(raw, "access")
15782
+ };
15783
+ }
15784
+ var TokenScopeSchema = preprocess(migrateLegacyTokenScope, discriminatedUnion("type", [
15691
15785
  object({
15692
15786
  type: literal("category"),
15693
15787
  target: CapScopeSchema,
@@ -15703,18 +15797,8 @@ var TokenScopeSchema = discriminatedUnion("type", [
15703
15797
  target: string(),
15704
15798
  access: array(MethodAccessSchema).min(1)
15705
15799
  }),
15706
- object({
15707
- type: literal("device"),
15708
- /**
15709
- * One or more deviceIds (serialised as strings for wire-format
15710
- * consistency with the rest of the union). Matcher accepts if
15711
- * `input.deviceId` ∈ `targets`. Array shape avoids the row-explosion
15712
- * of one scope-per-device when granting access to a set of cameras.
15713
- */
15714
- targets: array(string()).min(1),
15715
- access: array(MethodAccessSchema).min(1)
15716
- })
15717
- ]);
15800
+ DeviceTokenScopeSchema
15801
+ ]));
15718
15802
  object({
15719
15803
  id: string(),
15720
15804
  username: string(),
@@ -17770,7 +17854,7 @@ var detectionFpsField = {
17770
17854
  var occupancyRecheckSecField = {
17771
17855
  min: 0,
17772
17856
  max: 300,
17773
- default: 30,
17857
+ default: 300,
17774
17858
  step: 5
17775
17859
  };
17776
17860
  var occupancyRecheckFramesField = {
@@ -23136,7 +23220,41 @@ var intercomCapability = {
23136
23220
  status: {
23137
23221
  schema: IntercomStatusSchema,
23138
23222
  kind: "command-driven"
23139
- }
23223
+ },
23224
+ /**
23225
+ * Runtime-state slice — mirrored by the kernel.
23226
+ *
23227
+ * The cap declared `status` and nothing else, so the only two sources an
23228
+ * exporter has for a value — the `device.state-changed` slice event and the
23229
+ * `deviceState.getAllSnapshots` snapshot, both built from runtime state —
23230
+ * carried nothing for `intercom`. A talk-back entity in Home Assistant would
23231
+ * have been published and never received a value, which is the defect the
23232
+ * export's two classification tables exist to prevent (177 of them, once), so
23233
+ * `intercom` was excluded rather than exported.
23234
+ *
23235
+ * The shape is the status shape: there is exactly one truth about talk-back
23236
+ * and duplicating it into a second schema is how two halves of one capability
23237
+ * come to disagree. Providers write it through
23238
+ * `this.runtimeState.setCapState('intercom', …)` at the four points that open
23239
+ * and close a session, and seed it at registration so the slice exists before
23240
+ * the first session rather than after it.
23241
+ *
23242
+ * **Bound, named rather than hidden:** `talking` mirrors the provider's own
23243
+ * session handle, so a session torn down by a transport death that never
23244
+ * reaches `stopSession` / `endTalkSession` leaves it latched until the next
23245
+ * session or the next restart. That is why the slice is `session` and not
23246
+ * `restored` — a restart must never restore "talking".
23247
+ */
23248
+ runtimeState: IntercomStatusSchema,
23249
+ /**
23250
+ * Runtime-state durability: **session** — `talking` describes a live audio
23251
+ * session, which by definition does not survive the process that held it.
23252
+ * Restoring it would publish a camera as talking to nobody.
23253
+ *
23254
+ * See `RuntimeStateDurability`. Enforced by
23255
+ * `scripts/check-runtime-state-durability.ts`.
23256
+ */
23257
+ durability: "session"
23140
23258
  };
23141
23259
  /**
23142
23260
  * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
@@ -25967,7 +26085,7 @@ method(object({
25967
26085
  toMs: number()
25968
26086
  }), RecordingAvailabilitySchema, {
25969
26087
  kind: "query",
25970
- auth: "admin"
26088
+ auth: "protected"
25971
26089
  }), method(object({
25972
26090
  deviceId: number(),
25973
26091
  fromMs: number(),
@@ -25975,14 +26093,14 @@ method(object({
25975
26093
  tzOffsetMinutes: number()
25976
26094
  }), RecordingDaysSchema, {
25977
26095
  kind: "query",
25978
- auth: "admin"
26096
+ auth: "protected"
25979
26097
  }), method(object({
25980
26098
  deviceId: number(),
25981
26099
  fromMs: number(),
25982
26100
  toMs: number()
25983
26101
  }), RecordingManifestSchema, {
25984
26102
  kind: "query",
25985
- auth: "admin"
26103
+ auth: "protected"
25986
26104
  }), method(object({}), RecordingStorageUsageSchema, {
25987
26105
  kind: "query",
25988
26106
  auth: "admin"
@@ -28458,6 +28576,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
28458
28576
  humiditySensor: humiditySensorCapability,
28459
28577
  image: imageCapability,
28460
28578
  imageSettings: imageSettingsCapability,
28579
+ intercom: intercomCapability,
28461
28580
  lawnMowerControl: lawnMowerControlCapability,
28462
28581
  lockControl: lockControlCapability,
28463
28582
  mediaPlayer: mediaPlayerCapability,
@@ -34945,6 +35064,1678 @@ Object.freeze({
34945
35064
  access: "create"
34946
35065
  }
34947
35066
  });
35067
+ Object.freeze({
35068
+ "accessories.setChildHidden": [{
35069
+ name: "childDeviceId",
35070
+ form: "single",
35071
+ optional: false
35072
+ }, {
35073
+ name: "deviceId",
35074
+ form: "single",
35075
+ optional: false
35076
+ }],
35077
+ "addonSettings.getDeviceSettings": [{
35078
+ name: "deviceId",
35079
+ form: "single",
35080
+ optional: false
35081
+ }],
35082
+ "addonSettings.updateDeviceSettings": [{
35083
+ name: "deviceId",
35084
+ form: "single",
35085
+ optional: false
35086
+ }],
35087
+ "alarmPanel.arm": [{
35088
+ name: "deviceId",
35089
+ form: "single",
35090
+ optional: false
35091
+ }],
35092
+ "alarmPanel.disarm": [{
35093
+ name: "deviceId",
35094
+ form: "single",
35095
+ optional: false
35096
+ }],
35097
+ "alarmPanel.trigger": [{
35098
+ name: "deviceId",
35099
+ form: "single",
35100
+ optional: false
35101
+ }],
35102
+ "audioAnalysis.resolveDeviceSettings": [{
35103
+ name: "deviceId",
35104
+ form: "single",
35105
+ optional: false
35106
+ }],
35107
+ "audioAnalyzer.classify": [{
35108
+ name: "deviceId",
35109
+ form: "single",
35110
+ optional: true
35111
+ }],
35112
+ "audioMetrics.getCurrentSnapshot": [{
35113
+ name: "deviceId",
35114
+ form: "single",
35115
+ optional: false
35116
+ }],
35117
+ "audioMetrics.getHistory": [{
35118
+ name: "deviceId",
35119
+ form: "single",
35120
+ optional: false
35121
+ }],
35122
+ "automationControl.disable": [{
35123
+ name: "deviceId",
35124
+ form: "single",
35125
+ optional: false
35126
+ }],
35127
+ "automationControl.enable": [{
35128
+ name: "deviceId",
35129
+ form: "single",
35130
+ optional: false
35131
+ }],
35132
+ "automationControl.trigger": [{
35133
+ name: "deviceId",
35134
+ form: "single",
35135
+ optional: false
35136
+ }],
35137
+ "battery.wakeForStream": [{
35138
+ name: "deviceId",
35139
+ form: "single",
35140
+ optional: false
35141
+ }],
35142
+ "brightness.setBrightness": [{
35143
+ name: "deviceId",
35144
+ form: "single",
35145
+ optional: false
35146
+ }],
35147
+ "button.press": [{
35148
+ name: "deviceId",
35149
+ form: "single",
35150
+ optional: false
35151
+ }],
35152
+ "cameraCredentials.getCredentials": [{
35153
+ name: "deviceId",
35154
+ form: "single",
35155
+ optional: false
35156
+ }],
35157
+ "cameraStreams.getBrokerStreams": [{
35158
+ name: "deviceId",
35159
+ form: "single",
35160
+ optional: false
35161
+ }],
35162
+ "cameraStreams.getCameraStreams": [{
35163
+ name: "deviceId",
35164
+ form: "single",
35165
+ optional: false
35166
+ }],
35167
+ "cameraStreams.getProfileRtspEntries": [{
35168
+ name: "deviceId",
35169
+ form: "single",
35170
+ optional: false
35171
+ }],
35172
+ "cameraStreams.getRtspEntries": [{
35173
+ name: "deviceId",
35174
+ form: "single",
35175
+ optional: false
35176
+ }],
35177
+ "cameraStreams.pickStream": [{
35178
+ name: "deviceId",
35179
+ form: "single",
35180
+ optional: false
35181
+ }],
35182
+ "climateControl.setFanMode": [{
35183
+ name: "deviceId",
35184
+ form: "single",
35185
+ optional: false
35186
+ }],
35187
+ "climateControl.setMode": [{
35188
+ name: "deviceId",
35189
+ form: "single",
35190
+ optional: false
35191
+ }],
35192
+ "climateControl.setPreset": [{
35193
+ name: "deviceId",
35194
+ form: "single",
35195
+ optional: false
35196
+ }],
35197
+ "climateControl.setSwingHorizontal": [{
35198
+ name: "deviceId",
35199
+ form: "single",
35200
+ optional: false
35201
+ }],
35202
+ "climateControl.setSwingVertical": [{
35203
+ name: "deviceId",
35204
+ form: "single",
35205
+ optional: false
35206
+ }],
35207
+ "climateControl.setTarget": [{
35208
+ name: "deviceId",
35209
+ form: "single",
35210
+ optional: false
35211
+ }],
35212
+ "climateControl.setTargetHumidity": [{
35213
+ name: "deviceId",
35214
+ form: "single",
35215
+ optional: false
35216
+ }],
35217
+ "climateControl.setTargetRange": [{
35218
+ name: "deviceId",
35219
+ form: "single",
35220
+ optional: false
35221
+ }],
35222
+ "color.setColor": [{
35223
+ name: "deviceId",
35224
+ form: "single",
35225
+ optional: false
35226
+ }],
35227
+ "consumables.reset": [{
35228
+ name: "deviceId",
35229
+ form: "single",
35230
+ optional: false
35231
+ }],
35232
+ "control.setValue": [{
35233
+ name: "deviceId",
35234
+ form: "single",
35235
+ optional: false
35236
+ }],
35237
+ "cover.close": [{
35238
+ name: "deviceId",
35239
+ form: "single",
35240
+ optional: false
35241
+ }],
35242
+ "cover.open": [{
35243
+ name: "deviceId",
35244
+ form: "single",
35245
+ optional: false
35246
+ }],
35247
+ "cover.setPosition": [{
35248
+ name: "deviceId",
35249
+ form: "single",
35250
+ optional: false
35251
+ }],
35252
+ "cover.setTiltPosition": [{
35253
+ name: "deviceId",
35254
+ form: "single",
35255
+ optional: false
35256
+ }],
35257
+ "cover.stop": [{
35258
+ name: "deviceId",
35259
+ form: "single",
35260
+ optional: false
35261
+ }],
35262
+ "dayNight.getOptions": [{
35263
+ name: "deviceId",
35264
+ form: "single",
35265
+ optional: false
35266
+ }],
35267
+ "dayNight.setSettings": [{
35268
+ name: "deviceId",
35269
+ form: "single",
35270
+ optional: false
35271
+ }],
35272
+ "decoder.createSession": [{
35273
+ name: "deviceId",
35274
+ form: "single",
35275
+ optional: true
35276
+ }],
35277
+ "deviceAdoption.release": [{
35278
+ name: "camDeviceId",
35279
+ form: "single",
35280
+ optional: false
35281
+ }],
35282
+ "deviceAdoption.resync": [{
35283
+ name: "camDeviceId",
35284
+ form: "single",
35285
+ optional: false
35286
+ }],
35287
+ "deviceDiscovery.adoptDevice": [{
35288
+ name: "deviceId",
35289
+ form: "single",
35290
+ optional: false
35291
+ }],
35292
+ "deviceDiscovery.listDiscovered": [{
35293
+ name: "deviceId",
35294
+ form: "single",
35295
+ optional: false
35296
+ }],
35297
+ "deviceDiscovery.refreshDiscovery": [{
35298
+ name: "deviceId",
35299
+ form: "single",
35300
+ optional: false
35301
+ }],
35302
+ "deviceDiscovery.releaseDevice": [{
35303
+ name: "childDeviceId",
35304
+ form: "single",
35305
+ optional: false
35306
+ }, {
35307
+ name: "deviceId",
35308
+ form: "single",
35309
+ optional: false
35310
+ }],
35311
+ "deviceManager.adoptionRelease": [{
35312
+ name: "camDeviceId",
35313
+ form: "single",
35314
+ optional: false
35315
+ }],
35316
+ "deviceManager.adoptionResync": [{
35317
+ name: "camDeviceId",
35318
+ form: "single",
35319
+ optional: false
35320
+ }],
35321
+ "deviceManager.applyInitialMeta": [{
35322
+ name: "deviceId",
35323
+ form: "single",
35324
+ optional: false
35325
+ }, {
35326
+ name: "linkDeviceId",
35327
+ form: "single",
35328
+ optional: true
35329
+ }],
35330
+ "deviceManager.disable": [{
35331
+ name: "deviceId",
35332
+ form: "single",
35333
+ optional: false
35334
+ }],
35335
+ "deviceManager.enable": [{
35336
+ name: "deviceId",
35337
+ form: "single",
35338
+ optional: false
35339
+ }],
35340
+ "deviceManager.getBindings": [{
35341
+ name: "deviceId",
35342
+ form: "single",
35343
+ optional: false
35344
+ }],
35345
+ "deviceManager.getChildren": [{
35346
+ name: "parentDeviceId",
35347
+ form: "single",
35348
+ optional: false
35349
+ }],
35350
+ "deviceManager.getConfigSchema": [{
35351
+ name: "deviceId",
35352
+ form: "single",
35353
+ optional: false
35354
+ }],
35355
+ "deviceManager.getDevice": [{
35356
+ name: "deviceId",
35357
+ form: "single",
35358
+ optional: false
35359
+ }],
35360
+ "deviceManager.getDeviceAggregate": [{
35361
+ name: "deviceId",
35362
+ form: "single",
35363
+ optional: false
35364
+ }],
35365
+ "deviceManager.getDeviceLiveInfoAggregate": [{
35366
+ name: "deviceId",
35367
+ form: "single",
35368
+ optional: false
35369
+ }],
35370
+ "deviceManager.getDeviceSettingsAggregate": [{
35371
+ name: "deviceId",
35372
+ form: "single",
35373
+ optional: false
35374
+ }],
35375
+ "deviceManager.getDeviceStatusAggregate": [{
35376
+ name: "deviceId",
35377
+ form: "single",
35378
+ optional: false
35379
+ }],
35380
+ "deviceManager.getDeviceStatusAggregateBatch": [{
35381
+ name: "deviceIds",
35382
+ form: "array",
35383
+ optional: false
35384
+ }],
35385
+ "deviceManager.getLinkedDevices": [{
35386
+ name: "deviceId",
35387
+ form: "single",
35388
+ optional: false
35389
+ }],
35390
+ "deviceManager.getSettingsSchema": [{
35391
+ name: "deviceId",
35392
+ form: "single",
35393
+ optional: false
35394
+ }],
35395
+ "deviceManager.getStreamProfileMap": [{
35396
+ name: "deviceId",
35397
+ form: "single",
35398
+ optional: false
35399
+ }],
35400
+ "deviceManager.getStreamSources": [{
35401
+ name: "deviceId",
35402
+ form: "single",
35403
+ optional: false
35404
+ }],
35405
+ "deviceManager.getWireableFields": [{
35406
+ name: "deviceId",
35407
+ form: "single",
35408
+ optional: false
35409
+ }],
35410
+ "deviceManager.loadConfig": [{
35411
+ name: "deviceId",
35412
+ form: "single",
35413
+ optional: false
35414
+ }],
35415
+ "deviceManager.loadMeta": [{
35416
+ name: "deviceId",
35417
+ form: "single",
35418
+ optional: false
35419
+ }],
35420
+ "deviceManager.loadRuntimeState": [{
35421
+ name: "deviceId",
35422
+ form: "single",
35423
+ optional: false
35424
+ }],
35425
+ "deviceManager.persistConfig": [{
35426
+ name: "deviceId",
35427
+ form: "single",
35428
+ optional: false
35429
+ }],
35430
+ "deviceManager.probeStreams": [{
35431
+ name: "deviceId",
35432
+ form: "single",
35433
+ optional: false
35434
+ }],
35435
+ "deviceManager.registerDevice": [{
35436
+ name: "parentDeviceId",
35437
+ form: "single",
35438
+ optional: true
35439
+ }],
35440
+ "deviceManager.remove": [{
35441
+ name: "deviceId",
35442
+ form: "single",
35443
+ optional: false
35444
+ }],
35445
+ "deviceManager.removeDevice": [{
35446
+ name: "deviceId",
35447
+ form: "single",
35448
+ optional: false
35449
+ }],
35450
+ "deviceManager.runDeviceAction": [{
35451
+ name: "deviceId",
35452
+ form: "single",
35453
+ optional: false
35454
+ }],
35455
+ "deviceManager.setChildLayout": [{
35456
+ name: "deviceId",
35457
+ form: "single",
35458
+ optional: false
35459
+ }],
35460
+ "deviceManager.setDisabled": [{
35461
+ name: "deviceId",
35462
+ form: "single",
35463
+ optional: false
35464
+ }],
35465
+ "deviceManager.setDisplay": [{
35466
+ name: "deviceId",
35467
+ form: "single",
35468
+ optional: false
35469
+ }],
35470
+ "deviceManager.setIntegrationId": [{
35471
+ name: "deviceId",
35472
+ form: "single",
35473
+ optional: false
35474
+ }],
35475
+ "deviceManager.setLinkDeviceId": [{
35476
+ name: "deviceId",
35477
+ form: "single",
35478
+ optional: false
35479
+ }, {
35480
+ name: "linkDeviceId",
35481
+ form: "single",
35482
+ optional: true
35483
+ }],
35484
+ "deviceManager.setLocation": [{
35485
+ name: "deviceId",
35486
+ form: "single",
35487
+ optional: false
35488
+ }],
35489
+ "deviceManager.setMetadata": [{
35490
+ name: "deviceId",
35491
+ form: "single",
35492
+ optional: false
35493
+ }],
35494
+ "deviceManager.setName": [{
35495
+ name: "deviceId",
35496
+ form: "single",
35497
+ optional: false
35498
+ }],
35499
+ "deviceManager.setPrimaryChildEntityId": [{
35500
+ name: "deviceId",
35501
+ form: "single",
35502
+ optional: false
35503
+ }],
35504
+ "deviceManager.setRole": [{
35505
+ name: "deviceId",
35506
+ form: "single",
35507
+ optional: false
35508
+ }],
35509
+ "deviceManager.setStreamProfileMap": [{
35510
+ name: "deviceId",
35511
+ form: "single",
35512
+ optional: false
35513
+ }],
35514
+ "deviceManager.setType": [{
35515
+ name: "deviceId",
35516
+ form: "single",
35517
+ optional: false
35518
+ }],
35519
+ "deviceManager.setWrapperActive": [{
35520
+ name: "deviceId",
35521
+ form: "single",
35522
+ optional: false
35523
+ }],
35524
+ "deviceManager.testField": [{
35525
+ name: "deviceId",
35526
+ form: "single",
35527
+ optional: false
35528
+ }],
35529
+ "deviceManager.updateConfig": [{
35530
+ name: "deviceId",
35531
+ form: "single",
35532
+ optional: false
35533
+ }],
35534
+ "deviceManager.updateDeviceField": [{
35535
+ name: "deviceId",
35536
+ form: "single",
35537
+ optional: false
35538
+ }],
35539
+ "deviceManager.updateDeviceFieldsBatch": [{
35540
+ name: "deviceId",
35541
+ form: "single",
35542
+ optional: false
35543
+ }],
35544
+ "deviceOps.getConfigEntries": [{
35545
+ name: "deviceId",
35546
+ form: "single",
35547
+ optional: false
35548
+ }],
35549
+ "deviceOps.getRawState": [{
35550
+ name: "deviceId",
35551
+ form: "single",
35552
+ optional: false
35553
+ }],
35554
+ "deviceOps.getSettingsSchema": [{
35555
+ name: "deviceId",
35556
+ form: "single",
35557
+ optional: false
35558
+ }],
35559
+ "deviceOps.getStreamSources": [{
35560
+ name: "deviceId",
35561
+ form: "single",
35562
+ optional: false
35563
+ }],
35564
+ "deviceOps.removeDevice": [{
35565
+ name: "deviceId",
35566
+ form: "single",
35567
+ optional: false
35568
+ }],
35569
+ "deviceOps.runAction": [{
35570
+ name: "deviceId",
35571
+ form: "single",
35572
+ optional: false
35573
+ }],
35574
+ "deviceOps.setConfig": [{
35575
+ name: "deviceId",
35576
+ form: "single",
35577
+ optional: false
35578
+ }],
35579
+ "deviceState.getCapSlice": [{
35580
+ name: "deviceId",
35581
+ form: "single",
35582
+ optional: false
35583
+ }],
35584
+ "deviceState.getSnapshot": [{
35585
+ name: "deviceId",
35586
+ form: "single",
35587
+ optional: false
35588
+ }],
35589
+ "deviceState.setCapSlice": [{
35590
+ name: "deviceId",
35591
+ form: "single",
35592
+ optional: false
35593
+ }],
35594
+ "events.getEventClipUrl": [{
35595
+ name: "deviceId",
35596
+ form: "single",
35597
+ optional: false
35598
+ }],
35599
+ "events.getEvents": [{
35600
+ name: "deviceId",
35601
+ form: "single",
35602
+ optional: false
35603
+ }],
35604
+ "events.getEventThumbnail": [{
35605
+ name: "deviceId",
35606
+ form: "single",
35607
+ optional: false
35608
+ }],
35609
+ "faceGallery.getFaceByTrack": [{
35610
+ name: "deviceId",
35611
+ form: "single",
35612
+ optional: false
35613
+ }],
35614
+ "faceGallery.listRecentFaces": [{
35615
+ name: "deviceId",
35616
+ form: "single",
35617
+ optional: true
35618
+ }],
35619
+ "fanControl.setDirection": [{
35620
+ name: "deviceId",
35621
+ form: "single",
35622
+ optional: false
35623
+ }],
35624
+ "fanControl.setOscillating": [{
35625
+ name: "deviceId",
35626
+ form: "single",
35627
+ optional: false
35628
+ }],
35629
+ "fanControl.setPercentage": [{
35630
+ name: "deviceId",
35631
+ form: "single",
35632
+ optional: false
35633
+ }],
35634
+ "fanControl.setPreset": [{
35635
+ name: "deviceId",
35636
+ form: "single",
35637
+ optional: false
35638
+ }],
35639
+ "humidifier.setMode": [{
35640
+ name: "deviceId",
35641
+ form: "single",
35642
+ optional: false
35643
+ }],
35644
+ "humidifier.setOn": [{
35645
+ name: "deviceId",
35646
+ form: "single",
35647
+ optional: false
35648
+ }],
35649
+ "humidifier.setTargetHumidity": [{
35650
+ name: "deviceId",
35651
+ form: "single",
35652
+ optional: false
35653
+ }],
35654
+ "imageSettings.getOptions": [{
35655
+ name: "deviceId",
35656
+ form: "single",
35657
+ optional: false
35658
+ }],
35659
+ "imageSettings.setSettings": [{
35660
+ name: "deviceId",
35661
+ form: "single",
35662
+ optional: false
35663
+ }],
35664
+ "intercom.endTalkSession": [{
35665
+ name: "deviceId",
35666
+ form: "single",
35667
+ optional: false
35668
+ }],
35669
+ "intercom.handleAnswer": [{
35670
+ name: "deviceId",
35671
+ form: "single",
35672
+ optional: false
35673
+ }],
35674
+ "intercom.pushTalkAudio": [{
35675
+ name: "deviceId",
35676
+ form: "single",
35677
+ optional: false
35678
+ }],
35679
+ "intercom.startSession": [{
35680
+ name: "deviceId",
35681
+ form: "single",
35682
+ optional: false
35683
+ }],
35684
+ "intercom.startTalkSession": [{
35685
+ name: "deviceId",
35686
+ form: "single",
35687
+ optional: false
35688
+ }],
35689
+ "intercom.stopSession": [{
35690
+ name: "deviceId",
35691
+ form: "single",
35692
+ optional: false
35693
+ }],
35694
+ "lawnMowerControl.dock": [{
35695
+ name: "deviceId",
35696
+ form: "single",
35697
+ optional: false
35698
+ }],
35699
+ "lawnMowerControl.pause": [{
35700
+ name: "deviceId",
35701
+ form: "single",
35702
+ optional: false
35703
+ }],
35704
+ "lawnMowerControl.startMowing": [{
35705
+ name: "deviceId",
35706
+ form: "single",
35707
+ optional: false
35708
+ }],
35709
+ "lockControl.lock": [{
35710
+ name: "deviceId",
35711
+ form: "single",
35712
+ optional: false
35713
+ }],
35714
+ "lockControl.open": [{
35715
+ name: "deviceId",
35716
+ form: "single",
35717
+ optional: false
35718
+ }],
35719
+ "lockControl.unlock": [{
35720
+ name: "deviceId",
35721
+ form: "single",
35722
+ optional: false
35723
+ }],
35724
+ "mediaPlayer.next": [{
35725
+ name: "deviceId",
35726
+ form: "single",
35727
+ optional: false
35728
+ }],
35729
+ "mediaPlayer.pause": [{
35730
+ name: "deviceId",
35731
+ form: "single",
35732
+ optional: false
35733
+ }],
35734
+ "mediaPlayer.play": [{
35735
+ name: "deviceId",
35736
+ form: "single",
35737
+ optional: false
35738
+ }],
35739
+ "mediaPlayer.playMedia": [{
35740
+ name: "deviceId",
35741
+ form: "single",
35742
+ optional: false
35743
+ }],
35744
+ "mediaPlayer.previous": [{
35745
+ name: "deviceId",
35746
+ form: "single",
35747
+ optional: false
35748
+ }],
35749
+ "mediaPlayer.seek": [{
35750
+ name: "deviceId",
35751
+ form: "single",
35752
+ optional: false
35753
+ }],
35754
+ "mediaPlayer.selectSource": [{
35755
+ name: "deviceId",
35756
+ form: "single",
35757
+ optional: false
35758
+ }],
35759
+ "mediaPlayer.setMute": [{
35760
+ name: "deviceId",
35761
+ form: "single",
35762
+ optional: false
35763
+ }],
35764
+ "mediaPlayer.setRepeat": [{
35765
+ name: "deviceId",
35766
+ form: "single",
35767
+ optional: false
35768
+ }],
35769
+ "mediaPlayer.setShuffle": [{
35770
+ name: "deviceId",
35771
+ form: "single",
35772
+ optional: false
35773
+ }],
35774
+ "mediaPlayer.setVolume": [{
35775
+ name: "deviceId",
35776
+ form: "single",
35777
+ optional: false
35778
+ }],
35779
+ "mediaPlayer.stop": [{
35780
+ name: "deviceId",
35781
+ form: "single",
35782
+ optional: false
35783
+ }],
35784
+ "motion.isDetected": [{
35785
+ name: "deviceId",
35786
+ form: "single",
35787
+ optional: false
35788
+ }],
35789
+ "motionDetection.analyze": [{
35790
+ name: "deviceId",
35791
+ form: "single",
35792
+ optional: false
35793
+ }],
35794
+ "motionDetection.removeCamera": [{
35795
+ name: "deviceId",
35796
+ form: "single",
35797
+ optional: false
35798
+ }],
35799
+ "motionTrigger.setMotionTrigger": [{
35800
+ name: "deviceId",
35801
+ form: "single",
35802
+ optional: false
35803
+ }],
35804
+ "motionZones.getOptions": [{
35805
+ name: "deviceId",
35806
+ form: "single",
35807
+ optional: false
35808
+ }],
35809
+ "motionZones.setZone": [{
35810
+ name: "deviceId",
35811
+ form: "single",
35812
+ optional: false
35813
+ }],
35814
+ "nativeObjectDetection.setEnabled": [{
35815
+ name: "deviceId",
35816
+ form: "single",
35817
+ optional: false
35818
+ }],
35819
+ "networkQuality.getDeviceStats": [{
35820
+ name: "deviceId",
35821
+ form: "single",
35822
+ optional: false
35823
+ }],
35824
+ "networkQuality.reportClientStats": [{
35825
+ name: "deviceId",
35826
+ form: "single",
35827
+ optional: false
35828
+ }],
35829
+ "notificationRules.setDeviceMuted": [{
35830
+ name: "deviceId",
35831
+ form: "single",
35832
+ optional: false
35833
+ }],
35834
+ "notifier.cancel": [{
35835
+ name: "deviceId",
35836
+ form: "single",
35837
+ optional: false
35838
+ }],
35839
+ "notifier.send": [{
35840
+ name: "deviceId",
35841
+ form: "single",
35842
+ optional: false
35843
+ }],
35844
+ "osd.setOverlay": [{
35845
+ name: "deviceId",
35846
+ form: "single",
35847
+ optional: false
35848
+ }],
35849
+ "osdManager.clearSlotBinding": [{
35850
+ name: "deviceId",
35851
+ form: "single",
35852
+ optional: false
35853
+ }],
35854
+ "osdManager.copyDeviceConfiguration": [{
35855
+ name: "sourceDeviceId",
35856
+ form: "single",
35857
+ optional: false
35858
+ }, {
35859
+ name: "targetDeviceId",
35860
+ form: "single",
35861
+ optional: false
35862
+ }],
35863
+ "osdManager.getDeviceOsd": [{
35864
+ name: "deviceId",
35865
+ form: "single",
35866
+ optional: false
35867
+ }],
35868
+ "osdManager.getSourceCatalog": [{
35869
+ name: "deviceId",
35870
+ form: "single",
35871
+ optional: false
35872
+ }],
35873
+ "osdManager.previewSlot": [{
35874
+ name: "deviceId",
35875
+ form: "single",
35876
+ optional: false
35877
+ }],
35878
+ "osdManager.renderDevice": [{
35879
+ name: "deviceId",
35880
+ form: "single",
35881
+ optional: false
35882
+ }],
35883
+ "osdManager.setSlotBinding": [{
35884
+ name: "deviceId",
35885
+ form: "single",
35886
+ optional: false
35887
+ }],
35888
+ "petFeeder.callPet": [{
35889
+ name: "deviceId",
35890
+ form: "single",
35891
+ optional: false
35892
+ }],
35893
+ "petFeeder.cancelFeed": [{
35894
+ name: "deviceId",
35895
+ form: "single",
35896
+ optional: false
35897
+ }],
35898
+ "petFeeder.feed": [{
35899
+ name: "deviceId",
35900
+ form: "single",
35901
+ optional: false
35902
+ }],
35903
+ "petFeeder.markFoodReplenished": [{
35904
+ name: "deviceId",
35905
+ form: "single",
35906
+ optional: false
35907
+ }],
35908
+ "petFeeder.playSound": [{
35909
+ name: "deviceId",
35910
+ form: "single",
35911
+ optional: false
35912
+ }],
35913
+ "petFeeder.resetDesiccant": [{
35914
+ name: "deviceId",
35915
+ form: "single",
35916
+ optional: false
35917
+ }],
35918
+ "petFeeder.setChildLock": [{
35919
+ name: "deviceId",
35920
+ form: "single",
35921
+ optional: false
35922
+ }],
35923
+ "petFeeder.setFeedSound": [{
35924
+ name: "deviceId",
35925
+ form: "single",
35926
+ optional: false
35927
+ }],
35928
+ "petFeeder.setIndicatorLight": [{
35929
+ name: "deviceId",
35930
+ form: "single",
35931
+ optional: false
35932
+ }],
35933
+ "petFeeder.setVolume": [{
35934
+ name: "deviceId",
35935
+ form: "single",
35936
+ optional: false
35937
+ }],
35938
+ "pipelineAnalytics.clearTracks": [{
35939
+ name: "deviceId",
35940
+ form: "single",
35941
+ optional: false
35942
+ }],
35943
+ "pipelineAnalytics.completeRetrainTrack": [{
35944
+ name: "deviceId",
35945
+ form: "single",
35946
+ optional: false
35947
+ }],
35948
+ "pipelineAnalytics.deleteDeviceEvents": [{
35949
+ name: "deviceId",
35950
+ form: "single",
35951
+ optional: false
35952
+ }],
35953
+ "pipelineAnalytics.deleteTracks": [{
35954
+ name: "deviceId",
35955
+ form: "single",
35956
+ optional: false
35957
+ }],
35958
+ "pipelineAnalytics.deselectRetrainFrame": [{
35959
+ name: "deviceId",
35960
+ form: "single",
35961
+ optional: false
35962
+ }],
35963
+ "pipelineAnalytics.getActiveTracks": [{
35964
+ name: "deviceId",
35965
+ form: "single",
35966
+ optional: false
35967
+ }],
35968
+ "pipelineAnalytics.getAudioEvents": [{
35969
+ name: "deviceId",
35970
+ form: "single",
35971
+ optional: false
35972
+ }],
35973
+ "pipelineAnalytics.getEventDensity": [{
35974
+ name: "deviceId",
35975
+ form: "single",
35976
+ optional: false
35977
+ }],
35978
+ "pipelineAnalytics.getKeyEvents": [{
35979
+ name: "deviceId",
35980
+ form: "single",
35981
+ optional: false
35982
+ }],
35983
+ "pipelineAnalytics.getMotionEvents": [{
35984
+ name: "deviceId",
35985
+ form: "single",
35986
+ optional: false
35987
+ }],
35988
+ "pipelineAnalytics.getObjectEvents": [{
35989
+ name: "deviceId",
35990
+ form: "single",
35991
+ optional: false
35992
+ }],
35993
+ "pipelineAnalytics.getRetrainExportUrl": [{
35994
+ name: "deviceIds",
35995
+ form: "array",
35996
+ optional: true
35997
+ }],
35998
+ "pipelineAnalytics.getSensorEvents": [{
35999
+ name: "deviceId",
36000
+ form: "single",
36001
+ optional: false
36002
+ }],
36003
+ "pipelineAnalytics.getTrack": [{
36004
+ name: "deviceId",
36005
+ form: "single",
36006
+ optional: false
36007
+ }],
36008
+ "pipelineAnalytics.getTrainingExportSummary": [{
36009
+ name: "deviceIds",
36010
+ form: "array",
36011
+ optional: true
36012
+ }],
36013
+ "pipelineAnalytics.getTrainingExportUrl": [{
36014
+ name: "deviceIds",
36015
+ form: "array",
36016
+ optional: true
36017
+ }],
36018
+ "pipelineAnalytics.listEventKinds": [{
36019
+ name: "deviceId",
36020
+ form: "single",
36021
+ optional: false
36022
+ }],
36023
+ "pipelineAnalytics.listEventKindsBatch": [{
36024
+ name: "deviceIds",
36025
+ form: "array",
36026
+ optional: false
36027
+ }],
36028
+ "pipelineAnalytics.listOpsLog": [{
36029
+ name: "deviceId",
36030
+ form: "single",
36031
+ optional: true
36032
+ }],
36033
+ "pipelineAnalytics.listRecentTracks": [{
36034
+ name: "deviceIds",
36035
+ form: "array",
36036
+ optional: false
36037
+ }],
36038
+ "pipelineAnalytics.listRetrainStaging": [{
36039
+ name: "deviceIds",
36040
+ form: "array",
36041
+ optional: true
36042
+ }],
36043
+ "pipelineAnalytics.listTracks": [{
36044
+ name: "deviceId",
36045
+ form: "single",
36046
+ optional: false
36047
+ }],
36048
+ "pipelineAnalytics.proposeRetrainAnnotations": [{
36049
+ name: "deviceId",
36050
+ form: "single",
36051
+ optional: false
36052
+ }],
36053
+ "pipelineAnalytics.pruneEventsBefore": [{
36054
+ name: "deviceId",
36055
+ form: "single",
36056
+ optional: false
36057
+ }],
36058
+ "pipelineAnalytics.pruneTracksBefore": [{
36059
+ name: "deviceId",
36060
+ form: "single",
36061
+ optional: false
36062
+ }],
36063
+ "pipelineAnalytics.rebuildObjectEmbeddings": [{
36064
+ name: "deviceId",
36065
+ form: "single",
36066
+ optional: true
36067
+ }],
36068
+ "pipelineAnalytics.restageRetrainTrack": [{
36069
+ name: "deviceId",
36070
+ form: "single",
36071
+ optional: false
36072
+ }],
36073
+ "pipelineAnalytics.saveRetrainAnnotations": [{
36074
+ name: "deviceId",
36075
+ form: "single",
36076
+ optional: false
36077
+ }],
36078
+ "pipelineAnalytics.searchObjectEvents": [{
36079
+ name: "deviceId",
36080
+ form: "single",
36081
+ optional: true
36082
+ }],
36083
+ "pipelineAnalytics.selectRetrainFrames": [{
36084
+ name: "deviceId",
36085
+ form: "single",
36086
+ optional: false
36087
+ }],
36088
+ "pipelineAnalytics.setTrackFlags": [{
36089
+ name: "deviceId",
36090
+ form: "single",
36091
+ optional: false
36092
+ }],
36093
+ "pipelineAnalytics.wipeAllAnalytics": [{
36094
+ name: "deviceId",
36095
+ form: "single",
36096
+ optional: false
36097
+ }],
36098
+ "pipelineExecutor.runPipeline": [{
36099
+ name: "deviceId",
36100
+ form: "single",
36101
+ optional: true
36102
+ }],
36103
+ "pipelineExecutor.runPipelineBatch": [{
36104
+ name: "deviceId",
36105
+ form: "single",
36106
+ optional: true
36107
+ }],
36108
+ "pipelineOrchestrator.assignAudio": [{
36109
+ name: "deviceId",
36110
+ form: "single",
36111
+ optional: false
36112
+ }],
36113
+ "pipelineOrchestrator.assignPipeline": [{
36114
+ name: "deviceId",
36115
+ form: "single",
36116
+ optional: false
36117
+ }],
36118
+ "pipelineOrchestrator.getAudioAssignment": [{
36119
+ name: "deviceId",
36120
+ form: "single",
36121
+ optional: false
36122
+ }],
36123
+ "pipelineOrchestrator.getCameraMetrics": [{
36124
+ name: "deviceId",
36125
+ form: "single",
36126
+ optional: false
36127
+ }],
36128
+ "pipelineOrchestrator.getCameraSettings": [{
36129
+ name: "deviceId",
36130
+ form: "single",
36131
+ optional: false
36132
+ }],
36133
+ "pipelineOrchestrator.getCameraStatus": [{
36134
+ name: "deviceId",
36135
+ form: "single",
36136
+ optional: false
36137
+ }],
36138
+ "pipelineOrchestrator.getCameraStatuses": [{
36139
+ name: "deviceIds",
36140
+ form: "array",
36141
+ optional: true
36142
+ }],
36143
+ "pipelineOrchestrator.getCameraStepOverrides": [{
36144
+ name: "deviceId",
36145
+ form: "single",
36146
+ optional: false
36147
+ }],
36148
+ "pipelineOrchestrator.getCameraSwitches": [{
36149
+ name: "deviceId",
36150
+ form: "single",
36151
+ optional: false
36152
+ }],
36153
+ "pipelineOrchestrator.getPipelineAssignment": [{
36154
+ name: "deviceId",
36155
+ form: "single",
36156
+ optional: false
36157
+ }],
36158
+ "pipelineOrchestrator.getPipelineDevicePin": [{
36159
+ name: "deviceId",
36160
+ form: "single",
36161
+ optional: false
36162
+ }],
36163
+ "pipelineOrchestrator.resolvePipeline": [{
36164
+ name: "deviceId",
36165
+ form: "single",
36166
+ optional: false
36167
+ }],
36168
+ "pipelineOrchestrator.setCameraPipelineForAgent": [{
36169
+ name: "deviceId",
36170
+ form: "single",
36171
+ optional: false
36172
+ }],
36173
+ "pipelineOrchestrator.setCameraStepOverride": [{
36174
+ name: "deviceId",
36175
+ form: "single",
36176
+ optional: false
36177
+ }],
36178
+ "pipelineOrchestrator.setCameraStepToggle": [{
36179
+ name: "deviceId",
36180
+ form: "single",
36181
+ optional: false
36182
+ }],
36183
+ "pipelineOrchestrator.setCameraSwitch": [{
36184
+ name: "deviceId",
36185
+ form: "single",
36186
+ optional: false
36187
+ }],
36188
+ "pipelineOrchestrator.setPipelineDevicePin": [{
36189
+ name: "deviceId",
36190
+ form: "single",
36191
+ optional: false
36192
+ }],
36193
+ "pipelineOrchestrator.unassignAudio": [{
36194
+ name: "deviceId",
36195
+ form: "single",
36196
+ optional: false
36197
+ }],
36198
+ "pipelineOrchestrator.unassignPipeline": [{
36199
+ name: "deviceId",
36200
+ form: "single",
36201
+ optional: false
36202
+ }],
36203
+ "pipelineRunner.attachCamera": [{
36204
+ name: "deviceId",
36205
+ form: "single",
36206
+ optional: false
36207
+ }],
36208
+ "pipelineRunner.detachCamera": [{
36209
+ name: "deviceId",
36210
+ form: "single",
36211
+ optional: false
36212
+ }],
36213
+ "pipelineRunner.getCameraMetrics": [{
36214
+ name: "deviceId",
36215
+ form: "single",
36216
+ optional: false
36217
+ }],
36218
+ "pipelineRunner.reportMotion": [{
36219
+ name: "deviceId",
36220
+ form: "single",
36221
+ optional: false
36222
+ }],
36223
+ "pipelineRunner.runDetailSubtree": [{
36224
+ name: "deviceId",
36225
+ form: "single",
36226
+ optional: false
36227
+ }],
36228
+ "pipelineRunner.runStatelessStep": [{
36229
+ name: "sourceDeviceId",
36230
+ form: "single",
36231
+ optional: false
36232
+ }],
36233
+ "plateGallery.getPlateByTrack": [{
36234
+ name: "deviceId",
36235
+ form: "single",
36236
+ optional: false
36237
+ }],
36238
+ "plateGallery.listPlates": [{
36239
+ name: "deviceId",
36240
+ form: "single",
36241
+ optional: true
36242
+ }],
36243
+ "privacyMask.getOptions": [{
36244
+ name: "deviceId",
36245
+ form: "single",
36246
+ optional: false
36247
+ }],
36248
+ "privacyMask.setAudioEnabled": [{
36249
+ name: "deviceId",
36250
+ form: "single",
36251
+ optional: false
36252
+ }],
36253
+ "privacyMask.setMask": [{
36254
+ name: "deviceId",
36255
+ form: "single",
36256
+ optional: false
36257
+ }],
36258
+ "ptz.continuousMove": [{
36259
+ name: "deviceId",
36260
+ form: "single",
36261
+ optional: false
36262
+ }],
36263
+ "ptz.deletePreset": [{
36264
+ name: "deviceId",
36265
+ form: "single",
36266
+ optional: false
36267
+ }],
36268
+ "ptz.getOptions": [{
36269
+ name: "deviceId",
36270
+ form: "single",
36271
+ optional: false
36272
+ }],
36273
+ "ptz.getPosition": [{
36274
+ name: "deviceId",
36275
+ form: "single",
36276
+ optional: false
36277
+ }],
36278
+ "ptz.getPresets": [{
36279
+ name: "deviceId",
36280
+ form: "single",
36281
+ optional: false
36282
+ }],
36283
+ "ptz.goHome": [{
36284
+ name: "deviceId",
36285
+ form: "single",
36286
+ optional: false
36287
+ }],
36288
+ "ptz.goToPreset": [{
36289
+ name: "deviceId",
36290
+ form: "single",
36291
+ optional: false
36292
+ }],
36293
+ "ptz.move": [{
36294
+ name: "deviceId",
36295
+ form: "single",
36296
+ optional: false
36297
+ }],
36298
+ "ptz.savePreset": [{
36299
+ name: "deviceId",
36300
+ form: "single",
36301
+ optional: false
36302
+ }],
36303
+ "ptz.setAutofocus": [{
36304
+ name: "deviceId",
36305
+ form: "single",
36306
+ optional: false
36307
+ }],
36308
+ "ptz.stop": [{
36309
+ name: "deviceId",
36310
+ form: "single",
36311
+ optional: false
36312
+ }],
36313
+ "ptzAutotrack.getSettings": [{
36314
+ name: "deviceId",
36315
+ form: "single",
36316
+ optional: false
36317
+ }],
36318
+ "ptzAutotrack.getStatus": [{
36319
+ name: "deviceId",
36320
+ form: "single",
36321
+ optional: false
36322
+ }],
36323
+ "ptzAutotrack.setEnabled": [{
36324
+ name: "deviceId",
36325
+ form: "single",
36326
+ optional: false
36327
+ }],
36328
+ "ptzAutotrack.setSettings": [{
36329
+ name: "deviceId",
36330
+ form: "single",
36331
+ optional: false
36332
+ }],
36333
+ "reboot.reboot": [{
36334
+ name: "deviceId",
36335
+ form: "single",
36336
+ optional: false
36337
+ }],
36338
+ "recording.deleteFootprint": [{
36339
+ name: "deviceId",
36340
+ form: "single",
36341
+ optional: false
36342
+ }],
36343
+ "recording.getAvailability": [{
36344
+ name: "deviceId",
36345
+ form: "single",
36346
+ optional: false
36347
+ }],
36348
+ "recording.getDaysWithRecordings": [{
36349
+ name: "deviceId",
36350
+ form: "single",
36351
+ optional: false
36352
+ }],
36353
+ "recording.getDeviceConfig": [{
36354
+ name: "deviceId",
36355
+ form: "single",
36356
+ optional: false
36357
+ }],
36358
+ "recording.getPlaybackManifest": [{
36359
+ name: "deviceId",
36360
+ form: "single",
36361
+ optional: false
36362
+ }],
36363
+ "recording.listOpsLog": [{
36364
+ name: "deviceId",
36365
+ form: "single",
36366
+ optional: true
36367
+ }],
36368
+ "recording.locateSegment": [{
36369
+ name: "deviceId",
36370
+ form: "single",
36371
+ optional: false
36372
+ }],
36373
+ "recording.pruneFootage": [{
36374
+ name: "deviceId",
36375
+ form: "single",
36376
+ optional: false
36377
+ }],
36378
+ "recording.readGopBytes": [{
36379
+ name: "deviceId",
36380
+ form: "single",
36381
+ optional: false
36382
+ }],
36383
+ "recording.readSegmentBytes": [{
36384
+ name: "deviceId",
36385
+ form: "single",
36386
+ optional: false
36387
+ }],
36388
+ "recording.relocateFootage": [{
36389
+ name: "deviceId",
36390
+ form: "single",
36391
+ optional: true
36392
+ }],
36393
+ "recording.renderClip": [{
36394
+ name: "deviceId",
36395
+ form: "single",
36396
+ optional: false
36397
+ }],
36398
+ "recording.renderGif": [{
36399
+ name: "deviceId",
36400
+ form: "single",
36401
+ optional: false
36402
+ }],
36403
+ "recording.rescanStorage": [{
36404
+ name: "deviceId",
36405
+ form: "single",
36406
+ optional: false
36407
+ }],
36408
+ "recording.setDeviceConfig": [{
36409
+ name: "deviceId",
36410
+ form: "single",
36411
+ optional: false
36412
+ }],
36413
+ "recording.startStorageMigrationMove": [{
36414
+ name: "deviceId",
36415
+ form: "single",
36416
+ optional: true
36417
+ }],
36418
+ "recordingExport.createExport": [{
36419
+ name: "deviceId",
36420
+ form: "single",
36421
+ optional: false
36422
+ }],
36423
+ "recordingExport.listExports": [{
36424
+ name: "deviceId",
36425
+ form: "single",
36426
+ optional: true
36427
+ }],
36428
+ "sceneMonitor.captureReference": [{
36429
+ name: "deviceId",
36430
+ form: "single",
36431
+ optional: false
36432
+ }],
36433
+ "sceneMonitor.createScene": [{
36434
+ name: "deviceId",
36435
+ form: "single",
36436
+ optional: false
36437
+ }],
36438
+ "sceneMonitor.deleteReference": [{
36439
+ name: "deviceId",
36440
+ form: "single",
36441
+ optional: false
36442
+ }],
36443
+ "sceneMonitor.deleteScene": [{
36444
+ name: "deviceId",
36445
+ form: "single",
36446
+ optional: false
36447
+ }],
36448
+ "sceneMonitor.listScenes": [{
36449
+ name: "deviceId",
36450
+ form: "single",
36451
+ optional: false
36452
+ }],
36453
+ "sceneMonitor.recheckNow": [{
36454
+ name: "deviceId",
36455
+ form: "single",
36456
+ optional: false
36457
+ }],
36458
+ "sceneMonitor.updateScene": [{
36459
+ name: "deviceId",
36460
+ form: "single",
36461
+ optional: false
36462
+ }],
36463
+ "scriptRunner.run": [{
36464
+ name: "deviceId",
36465
+ form: "single",
36466
+ optional: false
36467
+ }],
36468
+ "scriptRunner.stop": [{
36469
+ name: "deviceId",
36470
+ form: "single",
36471
+ optional: false
36472
+ }],
36473
+ "snapshot.getSnapshot": [{
36474
+ name: "deviceId",
36475
+ form: "single",
36476
+ optional: false
36477
+ }],
36478
+ "snapshot.getSnapshotOverview": [{
36479
+ name: "deviceIds",
36480
+ form: "array",
36481
+ optional: false
36482
+ }],
36483
+ "snapshot.invalidateCache": [{
36484
+ name: "deviceId",
36485
+ form: "single",
36486
+ optional: false
36487
+ }],
36488
+ "streamBroker.acquireEgressTranscode": [{
36489
+ name: "deviceId",
36490
+ form: "single",
36491
+ optional: false
36492
+ }],
36493
+ "streamBroker.assignProfile": [{
36494
+ name: "deviceId",
36495
+ form: "single",
36496
+ optional: false
36497
+ }],
36498
+ "streamBroker.getDeviceAudioMute": [{
36499
+ name: "deviceId",
36500
+ form: "single",
36501
+ optional: false
36502
+ }],
36503
+ "streamBroker.getStreamWithCodec": [{
36504
+ name: "deviceId",
36505
+ form: "single",
36506
+ optional: false
36507
+ }],
36508
+ "streamBroker.produceEventMedia": [{
36509
+ name: "deviceId",
36510
+ form: "single",
36511
+ optional: false
36512
+ }],
36513
+ "streamBroker.publishCameraStream": [{
36514
+ name: "deviceId",
36515
+ form: "single",
36516
+ optional: false
36517
+ }],
36518
+ "streamBroker.renderPreBufferClip": [{
36519
+ name: "deviceId",
36520
+ form: "single",
36521
+ optional: false
36522
+ }],
36523
+ "streamBroker.restartProfile": [{
36524
+ name: "deviceId",
36525
+ form: "single",
36526
+ optional: false
36527
+ }],
36528
+ "streamBroker.retractCameraStream": [{
36529
+ name: "deviceId",
36530
+ form: "single",
36531
+ optional: false
36532
+ }],
36533
+ "streamBroker.setDeviceAudioMute": [{
36534
+ name: "deviceId",
36535
+ form: "single",
36536
+ optional: false
36537
+ }],
36538
+ "streamBroker.unassignProfile": [{
36539
+ name: "deviceId",
36540
+ form: "single",
36541
+ optional: false
36542
+ }],
36543
+ "streamCatalog.getCatalog": [{
36544
+ name: "deviceId",
36545
+ form: "single",
36546
+ optional: false
36547
+ }],
36548
+ "streamParams.getConfigSchema": [{
36549
+ name: "deviceId",
36550
+ form: "single",
36551
+ optional: false
36552
+ }],
36553
+ "streamParams.getOptions": [{
36554
+ name: "deviceId",
36555
+ form: "single",
36556
+ optional: false
36557
+ }],
36558
+ "streamParams.setProfile": [{
36559
+ name: "deviceId",
36560
+ form: "single",
36561
+ optional: false
36562
+ }],
36563
+ "switch.setState": [{
36564
+ name: "deviceId",
36565
+ form: "single",
36566
+ optional: false
36567
+ }],
36568
+ "vacuumControl.locate": [{
36569
+ name: "deviceId",
36570
+ form: "single",
36571
+ optional: false
36572
+ }],
36573
+ "vacuumControl.pause": [{
36574
+ name: "deviceId",
36575
+ form: "single",
36576
+ optional: false
36577
+ }],
36578
+ "vacuumControl.returnToBase": [{
36579
+ name: "deviceId",
36580
+ form: "single",
36581
+ optional: false
36582
+ }],
36583
+ "vacuumControl.setFanSpeed": [{
36584
+ name: "deviceId",
36585
+ form: "single",
36586
+ optional: false
36587
+ }],
36588
+ "vacuumControl.start": [{
36589
+ name: "deviceId",
36590
+ form: "single",
36591
+ optional: false
36592
+ }],
36593
+ "vacuumControl.stop": [{
36594
+ name: "deviceId",
36595
+ form: "single",
36596
+ optional: false
36597
+ }],
36598
+ "valve.close": [{
36599
+ name: "deviceId",
36600
+ form: "single",
36601
+ optional: false
36602
+ }],
36603
+ "valve.open": [{
36604
+ name: "deviceId",
36605
+ form: "single",
36606
+ optional: false
36607
+ }],
36608
+ "valve.setPosition": [{
36609
+ name: "deviceId",
36610
+ form: "single",
36611
+ optional: false
36612
+ }],
36613
+ "valve.stop": [{
36614
+ name: "deviceId",
36615
+ form: "single",
36616
+ optional: false
36617
+ }],
36618
+ "videoclips.getClipPlayback": [{
36619
+ name: "deviceId",
36620
+ form: "single",
36621
+ optional: false
36622
+ }],
36623
+ "videoclips.listClips": [{
36624
+ name: "deviceId",
36625
+ form: "single",
36626
+ optional: false
36627
+ }],
36628
+ "waterHeater.setAway": [{
36629
+ name: "deviceId",
36630
+ form: "single",
36631
+ optional: false
36632
+ }],
36633
+ "waterHeater.setOperationMode": [{
36634
+ name: "deviceId",
36635
+ form: "single",
36636
+ optional: false
36637
+ }],
36638
+ "waterHeater.setTargetTemp": [{
36639
+ name: "deviceId",
36640
+ form: "single",
36641
+ optional: false
36642
+ }],
36643
+ "webrtcSession.addIceCandidate": [{
36644
+ name: "deviceId",
36645
+ form: "single",
36646
+ optional: false
36647
+ }],
36648
+ "webrtcSession.closeSession": [{
36649
+ name: "deviceId",
36650
+ form: "single",
36651
+ optional: false
36652
+ }],
36653
+ "webrtcSession.createSession": [{
36654
+ name: "deviceId",
36655
+ form: "single",
36656
+ optional: false
36657
+ }],
36658
+ "webrtcSession.getIceCandidates": [{
36659
+ name: "deviceId",
36660
+ form: "single",
36661
+ optional: false
36662
+ }],
36663
+ "webrtcSession.getSessionState": [{
36664
+ name: "deviceId",
36665
+ form: "single",
36666
+ optional: false
36667
+ }],
36668
+ "webrtcSession.handleAnswer": [{
36669
+ name: "deviceId",
36670
+ form: "single",
36671
+ optional: false
36672
+ }],
36673
+ "webrtcSession.handleOffer": [{
36674
+ name: "deviceId",
36675
+ form: "single",
36676
+ optional: false
36677
+ }],
36678
+ "webrtcSession.hasAdaptiveBitrate": [{
36679
+ name: "deviceId",
36680
+ form: "single",
36681
+ optional: false
36682
+ }],
36683
+ "webrtcSession.listStreams": [{
36684
+ name: "deviceId",
36685
+ form: "single",
36686
+ optional: false
36687
+ }],
36688
+ "zoneAnalytics.getCameraHistory": [{
36689
+ name: "deviceId",
36690
+ form: "single",
36691
+ optional: false
36692
+ }],
36693
+ "zoneAnalytics.getCurrentSnapshot": [{
36694
+ name: "deviceId",
36695
+ form: "single",
36696
+ optional: false
36697
+ }],
36698
+ "zoneAnalytics.getUnzonedHistory": [{
36699
+ name: "deviceId",
36700
+ form: "single",
36701
+ optional: false
36702
+ }],
36703
+ "zoneAnalytics.getZoneHistory": [{
36704
+ name: "deviceId",
36705
+ form: "single",
36706
+ optional: false
36707
+ }],
36708
+ "zoneRules.listRules": [{
36709
+ name: "deviceId",
36710
+ form: "single",
36711
+ optional: false
36712
+ }],
36713
+ "zoneRules.setRules": [{
36714
+ name: "deviceId",
36715
+ form: "single",
36716
+ optional: false
36717
+ }],
36718
+ "zones.addZone": [{
36719
+ name: "deviceId",
36720
+ form: "single",
36721
+ optional: false
36722
+ }],
36723
+ "zones.listZones": [{
36724
+ name: "deviceId",
36725
+ form: "single",
36726
+ optional: false
36727
+ }],
36728
+ "zones.removeZone": [{
36729
+ name: "deviceId",
36730
+ form: "single",
36731
+ optional: false
36732
+ }],
36733
+ "zones.updateZone": [{
36734
+ name: "deviceId",
36735
+ form: "single",
36736
+ optional: false
36737
+ }]
36738
+ });
34948
36739
  Object.freeze({
34949
36740
  "broker": "broker",
34950
36741
  "device-export": "device-export",
@@ -39739,6 +41530,29 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39739
41530
  * operator flips `twoWayAudioMode`) noop once the cap is already
39740
41531
  * registered.
39741
41532
  */
41533
+ /**
41534
+ * Mirror talk-back into the `intercom` runtime-state slice.
41535
+ *
41536
+ * The cap's `status` is command-driven and nothing reads it: every consumer
41537
+ * outside this process — the admin UI, the Home Assistant export — sees a
41538
+ * capability only through the runtime-state slice, via the
41539
+ * `device.state-changed` event or the `deviceState.getAllSnapshots`
41540
+ * snapshot. Without this write the `intercom` entity Home Assistant
41541
+ * publishes would exist and never receive a value, which is exactly the
41542
+ * defect that kept the capability out of the export.
41543
+ *
41544
+ * Called at the four points that open or close a session — and seeded at
41545
+ * registration, so the slice says `talking: false` from boot rather than
41546
+ * only after the first session.
41547
+ */
41548
+ publishIntercomState(talking) {
41549
+ const previous = this.getCapSlice(intercomCapability);
41550
+ this.setCapSlice(intercomCapability, {
41551
+ talking,
41552
+ lastSessionAt: talking ? Date.now() : previous?.lastSessionAt ?? null,
41553
+ ability: previous?.ability ?? null
41554
+ });
41555
+ }
39742
41556
  registerIntercomIfSupported() {
39743
41557
  if (this.intercomRegistered) return;
39744
41558
  if (!this.intercomEnabled()) return;
@@ -39763,7 +41577,14 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39763
41577
  deviceTag: `camera-${this.id}`
39764
41578
  })
39765
41579
  });
39766
- return this.intercomOrchestrator.start();
41580
+ try {
41581
+ const opened = await this.intercomOrchestrator.start();
41582
+ this.publishIntercomState(true);
41583
+ return opened;
41584
+ } catch (err) {
41585
+ this.publishIntercomState(false);
41586
+ throw err;
41587
+ }
39767
41588
  },
39768
41589
  handleAnswer: async ({ deviceId, sessionId, sdpAnswer }) => {
39769
41590
  if (deviceId !== this.id) return;
@@ -39774,6 +41595,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39774
41595
  if (deviceId !== this.id) return;
39775
41596
  if (!this.intercomOrchestrator) return;
39776
41597
  await this.intercomOrchestrator.stop(sessionId);
41598
+ this.publishIntercomState(false);
39777
41599
  },
39778
41600
  startTalkSession: async ({ deviceId }) => {
39779
41601
  if (deviceId !== this.id) throw new Error(`HikvisionCamera: intercom deviceId mismatch, expected ${this.id}, got ${deviceId}`);
@@ -39798,6 +41620,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39798
41620
  lastSequenceNumber: -1,
39799
41621
  opusDecode: null
39800
41622
  };
41623
+ this.publishIntercomState(true);
39801
41624
  this.ctx.logger.info("intercom talk session opened", {
39802
41625
  tags: { deviceId: this.id },
39803
41626
  meta: {
@@ -39934,6 +41757,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39934
41757
  }
39935
41758
  });
39936
41759
  });
41760
+ this.publishIntercomState(false);
39937
41761
  this.ctx.logger.info("intercom talk session closed", {
39938
41762
  tags: { deviceId: this.id },
39939
41763
  meta: {
@@ -39943,6 +41767,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39943
41767
  });
39944
41768
  }
39945
41769
  });
41770
+ this.publishIntercomState(false);
39946
41771
  this.ctx.logger.info("intercom cap registered (ISAPI two-way audio)", { tags: { deviceId: this.id } });
39947
41772
  }
39948
41773
  /**