---
title: "Get update messages about devices"
method: GET
path: "/v1/subscribe/devices"
tags: ["WebSocket updates"]
---

# Get update messages about devices

`GET /v1/subscribe/devices`

## Request

- Base URL: `https://api.ui.com/v1/connector/consoles/942A6FF664C0000000000964970E0000000009E710560000000068A9873F:9999999999/proxy/protect/integration`
- URL: `https://api.ui.com/v1/connector/consoles/942A6FF664C0000000000964970E0000000009E710560000000068A9873F:9999999999/proxy/protect/integration/v1/subscribe/devices`
- Auth: none declared
- TypeScript: <https://skmtc.dev/ubiquiti/apis/unifi-protect-api/docs/v1/subscribe/devices/get.ts> (a function with typed inputs; its response is checked against the schema)

A WebSocket subscription which broadcasts all changes happening to Protect-managed hardware devices

## Response `200`

Success response

- union: Device(s) which was created, updated or deleted
  - union
    - DeviceAdd
      - `type` 'add', required
      - `item` union, required
        - Nvr
          - `id` string, required: The primary key of nvr
          - `modelKey` 'nvr', required: The model key of the nvr
          - `name` string, required: The name of the device.
          - `doorbellSettings` DoorbellSettings, required
            - `defaultMessageText` string: Default text to display on the LCD screen.
            - `defaultMessageResetTimeoutMs` number: Default timeout for resetting LCD screen to the default message.
            - `customMessages` string[]: A list of custom doorbell messages.
            - `customImages` object[]: A list of custom doorbell images for client preview.
              - …
          - `armMode` NvrArmMode, required
            - `status` 'arming' | 'armed' | 'breach' | 'disabled', required
            - `armProfileId` string, nullable, required
            - `armedAt` number, nullable, required
            - `willBeArmedAt` number, nullable, required
            - `breachDetectedAt` number, nullable, required
            - `breachEventCount` number, required
            - `breachTriggerEventId` string, nullable, required
            - `breachEventId` string, nullable, required
        - Camera
          - `id` string, required: The primary key of camera
          - `modelKey` 'camera', required: The model key of the camera
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `isMicEnabled` boolean, required: Whether or not the microphone on camera is enabled
          - `osdSettings` OsdSettings, required: On Screen Display settings.
            - `isNameEnabled` boolean, required: Whether to show the name in the OSD.
            - `isDateEnabled` boolean, required: Whether to show the date in the OSD.
            - `isLogoEnabled` boolean, required: Whether to show the logo in the bottom right corner.
            - `isDebugEnabled` boolean, required: Whether debug info is enabled.
            - `overlayLocation` 'topLeft' | 'topMiddle' | 'topRight' | 'bottomLeft' | 'bottomMiddle' | 'bottomRight', required: The location of the overlay on the screen.
          - `ledSettings` LedSettings, required: LED settings.
            - `isEnabled` boolean, required: Indicates whether the status LED is enabled.
            - `welcomeLed` boolean, required: Indicates whether the welcome LED is enabled.
            - `floodLed` boolean, required: Indicates whether the flood LED is enabled.
          - `lcdMessage` LcdMessageUnion, required
            - `type` 'LEAVE_PACKAGE_AT_DOOR' | 'DO_NOT_DISTURB' | 'CUSTOM_MESSAGE' | 'IMAGE'
            - `resetAt` number, nullable: UNIX timestamp when doorbell message should be removed (if not set then `nvr.doorbellSettings.defaultMessageResetTimeoutMs` is used, if set to `null` then interpreted as "forever")
            - `text` string
          - `micVolume` number, required: Mic volume: a number from 0-100.
          - `activePatrolSlot` number, required: The slot number (0-4) of the patrol that is currently running, or null if no patrol is running
          - `videoMode` 'default' | 'highFps' | 'sport' | 'slowShutter' | 'lprReflex' | 'lprNoneReflex', required: Current video mode of the camera
          - `hdrType` 'auto' | 'on' | 'off', required: High Dynamic Range (HDR) mode setting.
          - `featureFlags` CameraFeatureFlags, required
            - `supportFullHdSnapshot` boolean, required: Whether camera support full HD or higher resolution snapshot
            - `hasHdr` boolean, required: Whether the camera supports High Dynamic Range mode
            - `smartDetectTypes` string[], required: What smart detection object types do the camera support.
            - `smartDetectAudioTypes` string[], required: What smart detection audio types do the camera support.
            - `videoModes` string[], required: A list of supported video modes by the camera
            - `hasMic` boolean, required: Whether the camera has a microphone
            - `hasLedStatus` boolean, required: Whether the camera has LED status
            - `hasSpeaker` boolean, required: Whether the camera has a speaker to support talkback
          - `smartDetectSettings` SmartDetectSettings, required: Smart detection settings for the camera.
            - `objectTypes` string[], required
            - `audioTypes` string[], required
          - `hasPackageCamera` boolean, required: Whether the camera has a package camera.
        - Chime
          - `id` string, required: The primary key of chime
          - `modelKey` 'chime', required: The model key of the chime
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `cameraIds` CameraId[], required: The list of (doorbell-only) cameras which this chime is paired to.
          - `ringSettings` RingSettings[], required: List of custom ringtone settings for (doorbell-only) cameras paired to this chime.
            - `cameraId` string, required: The primary key of camera
            - `repeatTimes` number, required: How many times should the ringtone be repeated
            - `ringtoneId` string, required: The primary key of ringtone
            - `volume` number, required: How loud should the ringtone be played. 0 being silent and 100 the loudest.
        - Light
          - `id` string, required: The primary key of light
          - `modelKey` 'light', required: The model key of the light
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `lightModeSettings` LightModeSettings, required: Settings for when and how your light gets activated
            - `mode` union: When will floodlight turn on.
              - …
            - `enableAt` union: At what time is the lighting mode relevant and acted upon (this has no effect when mode is off).
              - …
          - `lightDeviceSettings` LightDeviceSettings, required: Hardware settings for light device.
            - `isIndicatorEnabled` boolean: Turn on/off floodlight status LED indicator.
            - `pirDuration` number: How long the light stays on after a motion event in milliseconds.
            - `pirSensitivity` number: How sensitive is the PIR to motion (0-100)%.
            - `ledLevel` number: Brightness level of the main LED (1-6).
          - `isDark` boolean, required: Whether the light is currently sensing that it's in a dark scene.
          - `isLightOn` boolean, required: Whether the light has its main LED currently enabled.
          - `isLightForceEnabled` boolean, required: Whether the light has its main LED currently force-enabled.
          - `lastMotion` number, nullable, required: Unix timestamp of the last time the PIR motion-detection was triggered.
          - `isPirMotionDetected` boolean, required: Whether the light PIR is currently detecting motion
          - `camera` string, required: The primary key of camera
        - Viewer
          - `id` string, required: The primary key of viewer
          - `modelKey` 'viewer', required: The model key of the viewer
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `liveview` string, required: The primary key of liveview
          - `streamLimit` number, required: Count of maximum supported parallel live streams.
        - Speaker
          - `id` string, required: The primary key of speaker
          - `modelKey` 'speaker', required: The model key of the speaker
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `volume` integer, required: Speaker volume: a number from 0-100.
          - `micVolume` integer, required: Mic volume: a number from 0-100.
          - `isMicEnabled` boolean, required: Whether or not the microphone on the speaker is enabled.
          - `speakerState` SpeakerState, required: Real-time state of Speaker
            - `status` 'idle' | 'streaming' | 'playing' | 'tts_playing' | 'uploading', required: Current status of the speaker
            - `mode` 'listen' | 'talk', required: Current mode of the speaker
          - `featureFlags` SpeakerFeatureFlags, required: Feature flags of the speaker
            - `hasMic` boolean, required: Whether the device has a microphone.
        - Bridge
          - `id` string, required: The primary key of bridge
          - `modelKey` 'bridge', required: The model key of the bridge
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `platform` string, nullable, required: The bridge platform
          - `clients` string[], required: Array of IoT devices mac that bridge is reserving for
          - `maxClients` number, required: The max acceptable client number of a V2 bridge. V1 bridge does not support this feature.
        - Sensor
          - `id` string, required: The primary key of sensor
          - `modelKey` 'sensor', required: The model key of the sensor
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `mountType` 'door' | 'window' | 'garage' | 'leak' | 'none', required: Mounting type of the sensor.
          - `batteryStatus` BatteryStatus, required: [DEPRECATED] Use wirelessConnectionState.batteryStatus instead. Battery status.
            - `percentage` number, nullable: Battery charge level from 0 to 100 (%).
            - `isLow` boolean: Low battery charge level flag.
          - `stats` SensorStats, required: Sensor statistics.
            - `light` object: Ambient light value (Lux).
              - …
            - `humidity` object: Ambient light value (Lux).
              - …
            - `temperature` object: Ambient light value (Lux).
              - …
          - `lightSettings` LightSettings, required: Ambient light sensor settings.
            - `isEnabled` boolean: Enable ambient light sensor.
            - `margin` number: Ambient light threshold detection hysteresis margin (Lux). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Ambient light interrupt threshold low level from 1 to 503192 (Lux).
            - `highThreshold` number, nullable: Ambient light interrupt threshold high level from 1 to 503192 (Lux).
          - `humiditySettings` HumiditySettings, required: Relative humidity sensor settings.
            - `isEnabled` boolean: Enable relative humidity sensor.
            - `margin` number: Humidity threshold detection hysteresis margin (%). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Humidity low level threshold from 1 to 99 (%).
            - `highThreshold` number, nullable: Humidity high level threshold from 1 to 99 (%).
          - `temperatureSettings` TemperatureSettings, required: Temperature sensor settings.
            - `isEnabled` boolean: Enable temperature sensor.
            - `margin` number: Temperature threshold detection hysteresis margin (C). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Temperature low level threshold from -39 to 124 (C).
            - `highThreshold` number, nullable: Temperature high level threshold from -39 to 124 (C).
          - `isOpened` boolean, nullable, required: Whether the door/window/garage is opened.
          - `openStatusChangedAt` number, nullable, required: Unix timestamp when the door/window/garage was last opened or closed, nullable.
          - `isMotionDetected` boolean, required: Whether sensor is currently detecting the motion.
          - `motionDetectedAt` number, nullable, required: Unix timestamp when the last motion was detected.
          - `motionSettings` MotionSettings, required: Motion sensor settings.
            - `isEnabled` boolean: Enable motion sensor.
            - `sensitivity` number: Motion sensitivity (0-100) used when system is not armed or when no armed override is set.
            - `sensitivityWhenArmed` number: Motion sensitivity (0-100) used when the system is armed and `hasCustomSensitivityWhenArmed` is true on the sensor.
          - `glassBreakSettings` GlassBreakSettings, required: Glass break sensor settings.
            - `isEnabled` boolean: Enable glass break sensor.
            - `sensitivity` number: Glass break sensitivity (0-100) used when system is not armed or when no armed override is set.
            - `sensitivityWhenArmed` number: Glass break sensitivity (0-100) used when the system is armed and `hasCustomSensitivityWhenArmed` is true on the sensor.
          - `scheduleMode` 'always' | 'when_armed', required: When armed-mode detection runs: `always` or only `when_armed`. Applies to both glass break and motion together.
          - `armProfileIds` string[], nullable, required: When `scheduleMode` is `when_armed`, restricts armed-mode detection to these arm profile ids. Empty or null = all profiles.
          - `hasCustomSensitivityWhenArmed` boolean, required: When true, glass break and motion both use their respective `sensitivityWhenArmed` value while the system is armed.
          - `alarmTriggeredAt` number, nullable, required: Unix timestamp when the smoke or carbon monoxide alarm was triggered, nullable.
          - `alarmSettings` AlarmSettings, required: Smoke and carbon monoxide alarm sensor settings.
            - `isEnabled` boolean: Enable smoke and carbon monoxide alarm sensor.
          - `leakDetectedAt` number, nullable, required: Unix timestamp when the sensor detected a water leak, nullable.
          - `externalLeakDetectedAt` number, nullable, required: Unix timestamp when the sensor detected an external water leak, nullable.
          - `leakSettings` LeakSettings, required: Leak sensor settings.
            - `isInternalEnabled` boolean: Enable internal water leak detection.
            - `isExternalEnabled` boolean: Enable external water leak detection.
          - `tamperingDetectedAt` number, nullable, required: Unix timestamp when the sensor detected tampering, nullable.
          - `wirelessConnectionState` WirelessConnectionState, required: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - Siren
          - `id` string, required: The primary key of siren
          - `modelKey` 'siren', required: The model key of the siren
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `volume` integer, required: Volume: a number from 1-100.
          - `ledSettings` SirenLedSettingsExternal, required: Status LED settings.
            - `isEnabled` boolean, required: Enable status LED.
          - `sirenStatus` SirenStatus, required: Status of the siren
            - `isActive` boolean, required: Whether the siren is active.
            - `activatedAt` number, nullable, required: Timestamp when the siren was activated.
            - `duration` union, required: Duration of the siren activation in milliseconds.
              - …
          - `connectionType` 'ucp4' | 'lora', required: The connection type of the siren.
          - `wirelessConnectionState` WirelessConnectionState, required: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - Fob
          - `id` string, required: The primary key of fob
          - `modelKey` 'fob', required: The model key of the fob
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `awayState` 'ONLINE' | 'RECENTLY_SEEN' | 'NO_RECENT_HEARTBEAT' | 'DEVICE_LOST', required: Fob presence/away state.
          - `buttonLabels` 'securityActions' | 'positionHint', required: Label style applied when this fob is rendered in button selection lists.
          - `featureFlags` FobFeatureFlags, required: Feature flags for the fob.
            - `buttons` string[], required: Available button types on the fob.
          - `wirelessConnectionState` WirelessConnectionState, required: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - Relay
          - `id` string, required: The primary key of relay
          - `modelKey` 'relay', required: The model key of the relay
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `ledSettings` RelayLedSettings, required: Status LED settings.
            - `isEnabled` boolean, required: Enable status LED.
          - `outputs` RelayOutput[], required
            - `id` number, required: The channel index of the relay output.
            - `name` string, nullable, required: User-friendly name for this relay output.
            - `type` 'garageDoor' | 'gate' | 'valve' | 'siren' | 'custom', nullable, required: The type of device connected to this relay output.
            - `delay` number, nullable, required: Server-side delay in milliseconds before activation (0 = no delay, null = use default).
            - `pulseDuration` number, nullable, required: Auto-off duration in milliseconds (0 = permanent on until manually turned off, null = use default).
            - `state` 'on' | 'off' | 'offOtp', nullable, required: The current state of the relay output.
            - `rebootState` 'restore' | 'on' | 'off', required: The state the relay output should be set to after a reboot/power cycle.
          - `inputs` RelayInput[], required
            - `id` number, required: The channel index of the relay input.
            - `name` string, nullable, required: User-friendly name for this relay input.
            - `state` 'on' | 'off', nullable, required: The current state of the relay input.
            - `actionTrigger` 'switchedOn' | 'switchedOff', nullable, required: The trigger event that activates the action.
            - `actionType` 'setOutputOn' | 'setOutputOff' | 'toggleOutput' | 'followInput', nullable, required: The type of action to perform when triggered.
            - `actionOutputId` number, nullable, required: The index of the output to control when triggered.
          - `wirelessConnectionState` WirelessConnectionState, required: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - AiProcessor
          - `id` string, required: The primary key of device
          - `modelKey` 'aiprocessor', required: The model key of the aiprocessor
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
        - AiPort
          - `id` string, required: The primary key of device
          - `modelKey` 'aiport', required: The model key of the aiport
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
        - LinkStation
          - `id` string, required: The primary key of linkStation
          - `modelKey` 'linkstation', required: The model key of the linkstation
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `isAlarmHub` boolean, required: Whether the linkstation is an alarm hub.
          - `ledSettings` LinkStationLedSettings, required: Status LED settings.
            - `isEnabled` boolean, required: Whether the status LED is enabled.
          - `lastEvent` number, nullable, required: Timestamp when any last event was detected.
          - `alarmHub` AlarmHubStatus: Alarm hub status and configuration. Only present when isAlarmHub is true.
            - `armed` 'on' | 'off', required
            - `battery` object
              - …
            - `buckboost` 'on' | 'off', required
            - `connector` object
              - …
            - `cover` object
              - …
            - `currentMeterChannelStatus` object, required
            - `currentMeterStatus` object, required
            - `inputPower` object
              - …
            - `poeout` object
              - …
            - `powerMeter` object, required
            - `output` object, required
            - `input` object, required
            - `inputTerminalStatus` object
            - `outputTerminalStatus` object
            - `emergencyTerminalStatus` object, nullable
              - …
            - `auxiliaryPowerTerminalStatus` object
    - DeviceUpdate
      - `type` 'update', required
      - `item` union, required
        - NvrPartialWithReference
          - `id` string, required: The primary key of nvr
          - `modelKey` 'nvr', required: The model key of the nvr
          - `name` string: The name of the device.
          - `doorbellSettings` DoorbellSettings
            - `defaultMessageText` string: Default text to display on the LCD screen.
            - `defaultMessageResetTimeoutMs` number: Default timeout for resetting LCD screen to the default message.
            - `customMessages` string[]: A list of custom doorbell messages.
            - `customImages` object[]: A list of custom doorbell images for client preview.
              - …
          - `armMode` NvrArmMode
            - `status` 'arming' | 'armed' | 'breach' | 'disabled', required
            - `armProfileId` string, nullable, required
            - `armedAt` number, nullable, required
            - `willBeArmedAt` number, nullable, required
            - `breachDetectedAt` number, nullable, required
            - `breachEventCount` number, required
            - `breachTriggerEventId` string, nullable, required
            - `breachEventId` string, nullable, required
        - CameraPartialWithReference
          - `id` string, required: The primary key of camera
          - `modelKey` 'camera', required: The model key of the camera
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `isMicEnabled` boolean: Whether or not the microphone on camera is enabled
          - `osdSettings` OsdSettings: On Screen Display settings.
            - `isNameEnabled` boolean, required: Whether to show the name in the OSD.
            - `isDateEnabled` boolean, required: Whether to show the date in the OSD.
            - `isLogoEnabled` boolean, required: Whether to show the logo in the bottom right corner.
            - `isDebugEnabled` boolean, required: Whether debug info is enabled.
            - `overlayLocation` 'topLeft' | 'topMiddle' | 'topRight' | 'bottomLeft' | 'bottomMiddle' | 'bottomRight', required: The location of the overlay on the screen.
          - `ledSettings` LedSettings: LED settings.
            - `isEnabled` boolean, required: Indicates whether the status LED is enabled.
            - `welcomeLed` boolean, required: Indicates whether the welcome LED is enabled.
            - `floodLed` boolean, required: Indicates whether the flood LED is enabled.
          - `lcdMessage` LcdMessageUnion
            - `type` 'LEAVE_PACKAGE_AT_DOOR' | 'DO_NOT_DISTURB' | 'CUSTOM_MESSAGE' | 'IMAGE'
            - `resetAt` number, nullable: UNIX timestamp when doorbell message should be removed (if not set then `nvr.doorbellSettings.defaultMessageResetTimeoutMs` is used, if set to `null` then interpreted as "forever")
            - `text` string
          - `micVolume` number: Mic volume: a number from 0-100.
          - `activePatrolSlot` number: The slot number (0-4) of the patrol that is currently running, or null if no patrol is running
          - `videoMode` 'default' | 'highFps' | 'sport' | 'slowShutter' | 'lprReflex' | 'lprNoneReflex': Current video mode of the camera
          - `hdrType` 'auto' | 'on' | 'off': High Dynamic Range (HDR) mode setting.
          - `featureFlags` CameraFeatureFlags
            - `supportFullHdSnapshot` boolean, required: Whether camera support full HD or higher resolution snapshot
            - `hasHdr` boolean, required: Whether the camera supports High Dynamic Range mode
            - `smartDetectTypes` string[], required: What smart detection object types do the camera support.
            - `smartDetectAudioTypes` string[], required: What smart detection audio types do the camera support.
            - `videoModes` string[], required: A list of supported video modes by the camera
            - `hasMic` boolean, required: Whether the camera has a microphone
            - `hasLedStatus` boolean, required: Whether the camera has LED status
            - `hasSpeaker` boolean, required: Whether the camera has a speaker to support talkback
          - `smartDetectSettings` SmartDetectSettings: Smart detection settings for the camera.
            - `objectTypes` string[], required
            - `audioTypes` string[], required
          - `hasPackageCamera` boolean: Whether the camera has a package camera.
        - ChimePartialWithReference
          - `id` string, required: The primary key of chime
          - `modelKey` 'chime', required: The model key of the chime
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `cameraIds` CameraId[]: The list of (doorbell-only) cameras which this chime is paired to.
          - `ringSettings` RingSettings[]: List of custom ringtone settings for (doorbell-only) cameras paired to this chime.
            - `cameraId` string, required: The primary key of camera
            - `repeatTimes` number, required: How many times should the ringtone be repeated
            - `ringtoneId` string, required: The primary key of ringtone
            - `volume` number, required: How loud should the ringtone be played. 0 being silent and 100 the loudest.
        - LightPartialWithReference
          - `id` string, required: The primary key of light
          - `modelKey` 'light', required: The model key of the light
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `lightModeSettings` LightModeSettings: Settings for when and how your light gets activated
            - `mode` union: When will floodlight turn on.
              - …
            - `enableAt` union: At what time is the lighting mode relevant and acted upon (this has no effect when mode is off).
              - …
          - `lightDeviceSettings` LightDeviceSettings: Hardware settings for light device.
            - `isIndicatorEnabled` boolean: Turn on/off floodlight status LED indicator.
            - `pirDuration` number: How long the light stays on after a motion event in milliseconds.
            - `pirSensitivity` number: How sensitive is the PIR to motion (0-100)%.
            - `ledLevel` number: Brightness level of the main LED (1-6).
          - `isDark` boolean: Whether the light is currently sensing that it's in a dark scene.
          - `isLightOn` boolean: Whether the light has its main LED currently enabled.
          - `isLightForceEnabled` boolean: Whether the light has its main LED currently force-enabled.
          - `lastMotion` number, nullable: Unix timestamp of the last time the PIR motion-detection was triggered.
          - `isPirMotionDetected` boolean: Whether the light PIR is currently detecting motion
          - `camera` string: The primary key of camera
        - ViewerPartialWithReference
          - `id` string, required: The primary key of viewer
          - `modelKey` 'viewer', required: The model key of the viewer
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `liveview` string: The primary key of liveview
          - `streamLimit` number: Count of maximum supported parallel live streams.
        - SpeakerPartialWithReference
          - `id` string, required: The primary key of speaker
          - `modelKey` 'speaker', required: The model key of the speaker
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `volume` integer: Speaker volume: a number from 0-100.
          - `micVolume` integer: Mic volume: a number from 0-100.
          - `isMicEnabled` boolean: Whether or not the microphone on the speaker is enabled.
          - `speakerState` SpeakerState: Real-time state of Speaker
            - `status` 'idle' | 'streaming' | 'playing' | 'tts_playing' | 'uploading', required: Current status of the speaker
            - `mode` 'listen' | 'talk', required: Current mode of the speaker
          - `featureFlags` SpeakerFeatureFlags: Feature flags of the speaker
            - `hasMic` boolean, required: Whether the device has a microphone.
        - BridgePartialWithReference
          - `id` string, required: The primary key of bridge
          - `modelKey` 'bridge', required: The model key of the bridge
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `platform` string, nullable: The bridge platform
          - `clients` string[]: Array of IoT devices mac that bridge is reserving for
          - `maxClients` number: The max acceptable client number of a V2 bridge. V1 bridge does not support this feature.
        - SensorPartialWithReference
          - `id` string, required: The primary key of sensor
          - `modelKey` 'sensor', required: The model key of the sensor
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `mountType` 'door' | 'window' | 'garage' | 'leak' | 'none': Mounting type of the sensor.
          - `batteryStatus` BatteryStatus: [DEPRECATED] Use wirelessConnectionState.batteryStatus instead. Battery status.
            - `percentage` number, nullable: Battery charge level from 0 to 100 (%).
            - `isLow` boolean: Low battery charge level flag.
          - `stats` SensorStats: Sensor statistics.
            - `light` object: Ambient light value (Lux).
              - …
            - `humidity` object: Ambient light value (Lux).
              - …
            - `temperature` object: Ambient light value (Lux).
              - …
          - `lightSettings` LightSettings: Ambient light sensor settings.
            - `isEnabled` boolean: Enable ambient light sensor.
            - `margin` number: Ambient light threshold detection hysteresis margin (Lux). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Ambient light interrupt threshold low level from 1 to 503192 (Lux).
            - `highThreshold` number, nullable: Ambient light interrupt threshold high level from 1 to 503192 (Lux).
          - `humiditySettings` HumiditySettings: Relative humidity sensor settings.
            - `isEnabled` boolean: Enable relative humidity sensor.
            - `margin` number: Humidity threshold detection hysteresis margin (%). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Humidity low level threshold from 1 to 99 (%).
            - `highThreshold` number, nullable: Humidity high level threshold from 1 to 99 (%).
          - `temperatureSettings` TemperatureSettings: Temperature sensor settings.
            - `isEnabled` boolean: Enable temperature sensor.
            - `margin` number: Temperature threshold detection hysteresis margin (C). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Temperature low level threshold from -39 to 124 (C).
            - `highThreshold` number, nullable: Temperature high level threshold from -39 to 124 (C).
          - `isOpened` boolean, nullable: Whether the door/window/garage is opened.
          - `openStatusChangedAt` number, nullable: Unix timestamp when the door/window/garage was last opened or closed, nullable.
          - `isMotionDetected` boolean: Whether sensor is currently detecting the motion.
          - `motionDetectedAt` number, nullable: Unix timestamp when the last motion was detected.
          - `motionSettings` MotionSettings: Motion sensor settings.
            - `isEnabled` boolean: Enable motion sensor.
            - `sensitivity` number: Motion sensitivity (0-100) used when system is not armed or when no armed override is set.
            - `sensitivityWhenArmed` number: Motion sensitivity (0-100) used when the system is armed and `hasCustomSensitivityWhenArmed` is true on the sensor.
          - `glassBreakSettings` GlassBreakSettings: Glass break sensor settings.
            - `isEnabled` boolean: Enable glass break sensor.
            - `sensitivity` number: Glass break sensitivity (0-100) used when system is not armed or when no armed override is set.
            - `sensitivityWhenArmed` number: Glass break sensitivity (0-100) used when the system is armed and `hasCustomSensitivityWhenArmed` is true on the sensor.
          - `scheduleMode` 'always' | 'when_armed': When armed-mode detection runs: `always` or only `when_armed`. Applies to both glass break and motion together.
          - `armProfileIds` string[], nullable: When `scheduleMode` is `when_armed`, restricts armed-mode detection to these arm profile ids. Empty or null = all profiles.
          - `hasCustomSensitivityWhenArmed` boolean: When true, glass break and motion both use their respective `sensitivityWhenArmed` value while the system is armed.
          - `alarmTriggeredAt` number, nullable: Unix timestamp when the smoke or carbon monoxide alarm was triggered, nullable.
          - `alarmSettings` AlarmSettings: Smoke and carbon monoxide alarm sensor settings.
            - `isEnabled` boolean: Enable smoke and carbon monoxide alarm sensor.
          - `leakDetectedAt` number, nullable: Unix timestamp when the sensor detected a water leak, nullable.
          - `externalLeakDetectedAt` number, nullable: Unix timestamp when the sensor detected an external water leak, nullable.
          - `leakSettings` LeakSettings: Leak sensor settings.
            - `isInternalEnabled` boolean: Enable internal water leak detection.
            - `isExternalEnabled` boolean: Enable external water leak detection.
          - `tamperingDetectedAt` number, nullable: Unix timestamp when the sensor detected tampering, nullable.
          - `wirelessConnectionState` WirelessConnectionState: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - SirenPartialWithReference
          - `id` string, required: The primary key of siren
          - `modelKey` 'siren', required: The model key of the siren
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `volume` integer: Volume: a number from 1-100.
          - `ledSettings` SirenLedSettingsExternal: Status LED settings.
            - `isEnabled` boolean, required: Enable status LED.
          - `sirenStatus` SirenStatus: Status of the siren
            - `isActive` boolean, required: Whether the siren is active.
            - `activatedAt` number, nullable, required: Timestamp when the siren was activated.
            - `duration` union, required: Duration of the siren activation in milliseconds.
              - …
          - `connectionType` 'ucp4' | 'lora': The connection type of the siren.
          - `wirelessConnectionState` WirelessConnectionState: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - FobPartialWithReference
          - `id` string, required: The primary key of fob
          - `modelKey` 'fob', required: The model key of the fob
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `awayState` 'ONLINE' | 'RECENTLY_SEEN' | 'NO_RECENT_HEARTBEAT' | 'DEVICE_LOST': Fob presence/away state.
          - `buttonLabels` 'securityActions' | 'positionHint': Label style applied when this fob is rendered in button selection lists.
          - `featureFlags` FobFeatureFlags: Feature flags for the fob.
            - `buttons` string[], required: Available button types on the fob.
          - `wirelessConnectionState` WirelessConnectionState: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - RelayPartialWithReference
          - `id` string, required: The primary key of relay
          - `modelKey` 'relay', required: The model key of the relay
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `ledSettings` RelayLedSettings: Status LED settings.
            - `isEnabled` boolean, required: Enable status LED.
          - `outputs` RelayOutput[]
            - `id` number, required: The channel index of the relay output.
            - `name` string, nullable, required: User-friendly name for this relay output.
            - `type` 'garageDoor' | 'gate' | 'valve' | 'siren' | 'custom', nullable, required: The type of device connected to this relay output.
            - `delay` number, nullable, required: Server-side delay in milliseconds before activation (0 = no delay, null = use default).
            - `pulseDuration` number, nullable, required: Auto-off duration in milliseconds (0 = permanent on until manually turned off, null = use default).
            - `state` 'on' | 'off' | 'offOtp', nullable, required: The current state of the relay output.
            - `rebootState` 'restore' | 'on' | 'off', required: The state the relay output should be set to after a reboot/power cycle.
          - `inputs` RelayInput[]
            - `id` number, required: The channel index of the relay input.
            - `name` string, nullable, required: User-friendly name for this relay input.
            - `state` 'on' | 'off', nullable, required: The current state of the relay input.
            - `actionTrigger` 'switchedOn' | 'switchedOff', nullable, required: The trigger event that activates the action.
            - `actionType` 'setOutputOn' | 'setOutputOff' | 'toggleOutput' | 'followInput', nullable, required: The type of action to perform when triggered.
            - `actionOutputId` number, nullable, required: The index of the output to control when triggered.
          - `wirelessConnectionState` WirelessConnectionState: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - AiProcessorPartialWithReference
          - `id` string, required: The primary key of device
          - `modelKey` 'aiprocessor', required: The model key of the aiprocessor
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
        - AiPortPartialWithReference
          - `id` string, required: The primary key of device
          - `modelKey` 'aiport', required: The model key of the aiport
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
        - LinkStationPartialWithReference
          - `id` string, required: The primary key of linkStation
          - `modelKey` 'linkstation', required: The model key of the linkstation
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `isAlarmHub` boolean: Whether the linkstation is an alarm hub.
          - `ledSettings` LinkStationLedSettings: Status LED settings.
            - `isEnabled` boolean, required: Whether the status LED is enabled.
          - `lastEvent` number, nullable: Timestamp when any last event was detected.
          - `alarmHub` AlarmHubStatus: Alarm hub status and configuration. Only present when isAlarmHub is true.
            - `armed` 'on' | 'off', required
            - `battery` object
              - …
            - `buckboost` 'on' | 'off', required
            - `connector` object
              - …
            - `cover` object
              - …
            - `currentMeterChannelStatus` object, required
            - `currentMeterStatus` object, required
            - `inputPower` object
              - …
            - `poeout` object
              - …
            - `powerMeter` object, required
            - `output` object, required
            - `input` object, required
            - `inputTerminalStatus` object
            - `outputTerminalStatus` object
            - `emergencyTerminalStatus` object, nullable
              - …
            - `auxiliaryPowerTerminalStatus` object
    - DeviceRemove
      - `type` 'remove', required
      - `item` union, required
        - NvrReference
          - `id` string, required: The primary key of nvr
          - `modelKey` 'nvr', required: The model key of the nvr
        - CameraReference
          - `id` string, required: The primary key of camera
          - `modelKey` 'camera', required: The model key of the camera
        - ChimeReference
          - `id` string, required: The primary key of chime
          - `modelKey` 'chime', required: The model key of the chime
        - LightReference
          - `id` string, required: The primary key of light
          - `modelKey` 'light', required: The model key of the light
        - ViewerReference
          - `id` string, required: The primary key of viewer
          - `modelKey` 'viewer', required: The model key of the viewer
        - SpeakerReference
          - `id` string, required: The primary key of speaker
          - `modelKey` 'speaker', required: The model key of the speaker
        - BridgeReference
          - `id` string, required: The primary key of bridge
          - `modelKey` 'bridge', required: The model key of the bridge
        - SensorReference
          - `id` string, required: The primary key of sensor
          - `modelKey` 'sensor', required: The model key of the sensor
        - SirenReference
          - `id` string, required: The primary key of siren
          - `modelKey` 'siren', required: The model key of the siren
        - FobReference
          - `id` string, required: The primary key of fob
          - `modelKey` 'fob', required: The model key of the fob
        - RelayReference
          - `id` string, required: The primary key of relay
          - `modelKey` 'relay', required: The model key of the relay
        - AiProcessorReference
          - `id` string, required: The primary key of device
          - `modelKey` 'aiprocessor', required: The model key of the aiprocessor
        - AiPortReference
          - `id` string, required: The primary key of device
          - `modelKey` 'aiport', required: The model key of the aiport
        - LinkStationReference
          - `id` string, required: The primary key of linkStation
          - `modelKey` 'linkstation', required: The model key of the linkstation
  - union
    - DevicesAdd
      - `type` 'add', required
      - `item` union, required
        - object
          - `id` union, required
            - string: The primary key of nvr
            - NvrId[]
          - `modelKey` 'nvr', required: The model key of the nvr
          - `name` string, required: The name of the device.
          - `doorbellSettings` DoorbellSettings, required
            - `defaultMessageText` string: Default text to display on the LCD screen.
            - `defaultMessageResetTimeoutMs` number: Default timeout for resetting LCD screen to the default message.
            - `customMessages` string[]: A list of custom doorbell messages.
            - `customImages` object[]: A list of custom doorbell images for client preview.
              - …
          - `armMode` NvrArmMode, required
            - `status` 'arming' | 'armed' | 'breach' | 'disabled', required
            - `armProfileId` string, nullable, required
            - `armedAt` number, nullable, required
            - `willBeArmedAt` number, nullable, required
            - `breachDetectedAt` number, nullable, required
            - `breachEventCount` number, required
            - `breachTriggerEventId` string, nullable, required
            - `breachEventId` string, nullable, required
        - object
          - `id` union, required
            - string: The primary key of camera
            - CameraId[]
          - `modelKey` 'camera', required: The model key of the camera
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `isMicEnabled` boolean, required: Whether or not the microphone on camera is enabled
          - `osdSettings` OsdSettings, required: On Screen Display settings.
            - `isNameEnabled` boolean, required: Whether to show the name in the OSD.
            - `isDateEnabled` boolean, required: Whether to show the date in the OSD.
            - `isLogoEnabled` boolean, required: Whether to show the logo in the bottom right corner.
            - `isDebugEnabled` boolean, required: Whether debug info is enabled.
            - `overlayLocation` 'topLeft' | 'topMiddle' | 'topRight' | 'bottomLeft' | 'bottomMiddle' | 'bottomRight', required: The location of the overlay on the screen.
          - `ledSettings` LedSettings, required: LED settings.
            - `isEnabled` boolean, required: Indicates whether the status LED is enabled.
            - `welcomeLed` boolean, required: Indicates whether the welcome LED is enabled.
            - `floodLed` boolean, required: Indicates whether the flood LED is enabled.
          - `lcdMessage` LcdMessageUnion, required
            - `type` 'LEAVE_PACKAGE_AT_DOOR' | 'DO_NOT_DISTURB' | 'CUSTOM_MESSAGE' | 'IMAGE'
            - `resetAt` number, nullable: UNIX timestamp when doorbell message should be removed (if not set then `nvr.doorbellSettings.defaultMessageResetTimeoutMs` is used, if set to `null` then interpreted as "forever")
            - `text` string
          - `micVolume` number, required: Mic volume: a number from 0-100.
          - `activePatrolSlot` number, required: The slot number (0-4) of the patrol that is currently running, or null if no patrol is running
          - `videoMode` 'default' | 'highFps' | 'sport' | 'slowShutter' | 'lprReflex' | 'lprNoneReflex', required: Current video mode of the camera
          - `hdrType` 'auto' | 'on' | 'off', required: High Dynamic Range (HDR) mode setting.
          - `featureFlags` CameraFeatureFlags, required
            - `supportFullHdSnapshot` boolean, required: Whether camera support full HD or higher resolution snapshot
            - `hasHdr` boolean, required: Whether the camera supports High Dynamic Range mode
            - `smartDetectTypes` string[], required: What smart detection object types do the camera support.
            - `smartDetectAudioTypes` string[], required: What smart detection audio types do the camera support.
            - `videoModes` string[], required: A list of supported video modes by the camera
            - `hasMic` boolean, required: Whether the camera has a microphone
            - `hasLedStatus` boolean, required: Whether the camera has LED status
            - `hasSpeaker` boolean, required: Whether the camera has a speaker to support talkback
          - `smartDetectSettings` SmartDetectSettings, required: Smart detection settings for the camera.
            - `objectTypes` string[], required
            - `audioTypes` string[], required
          - `hasPackageCamera` boolean, required: Whether the camera has a package camera.
        - object
          - `id` union, required
            - string: The primary key of chime
            - ChimeId[]
          - `modelKey` 'chime', required: The model key of the chime
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `cameraIds` CameraId[], required: The list of (doorbell-only) cameras which this chime is paired to.
          - `ringSettings` RingSettings[], required: List of custom ringtone settings for (doorbell-only) cameras paired to this chime.
            - `cameraId` string, required: The primary key of camera
            - `repeatTimes` number, required: How many times should the ringtone be repeated
            - `ringtoneId` string, required: The primary key of ringtone
            - `volume` number, required: How loud should the ringtone be played. 0 being silent and 100 the loudest.
        - object
          - `id` union, required
            - string: The primary key of light
            - LightId[]
          - `modelKey` 'light', required: The model key of the light
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `lightModeSettings` LightModeSettings, required: Settings for when and how your light gets activated
            - `mode` union: When will floodlight turn on.
              - …
            - `enableAt` union: At what time is the lighting mode relevant and acted upon (this has no effect when mode is off).
              - …
          - `lightDeviceSettings` LightDeviceSettings, required: Hardware settings for light device.
            - `isIndicatorEnabled` boolean: Turn on/off floodlight status LED indicator.
            - `pirDuration` number: How long the light stays on after a motion event in milliseconds.
            - `pirSensitivity` number: How sensitive is the PIR to motion (0-100)%.
            - `ledLevel` number: Brightness level of the main LED (1-6).
          - `isDark` boolean, required: Whether the light is currently sensing that it's in a dark scene.
          - `isLightOn` boolean, required: Whether the light has its main LED currently enabled.
          - `isLightForceEnabled` boolean, required: Whether the light has its main LED currently force-enabled.
          - `lastMotion` number, nullable, required: Unix timestamp of the last time the PIR motion-detection was triggered.
          - `isPirMotionDetected` boolean, required: Whether the light PIR is currently detecting motion
          - `camera` string, required: The primary key of camera
        - object
          - `id` union, required
            - string: The primary key of viewer
            - ViewerId[]
          - `modelKey` 'viewer', required: The model key of the viewer
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `liveview` string, required: The primary key of liveview
          - `streamLimit` number, required: Count of maximum supported parallel live streams.
        - object
          - `id` union, required
            - string: The primary key of speaker
            - SpeakerId[]
          - `modelKey` 'speaker', required: The model key of the speaker
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `volume` integer, required: Speaker volume: a number from 0-100.
          - `micVolume` integer, required: Mic volume: a number from 0-100.
          - `isMicEnabled` boolean, required: Whether or not the microphone on the speaker is enabled.
          - `speakerState` SpeakerState, required: Real-time state of Speaker
            - `status` 'idle' | 'streaming' | 'playing' | 'tts_playing' | 'uploading', required: Current status of the speaker
            - `mode` 'listen' | 'talk', required: Current mode of the speaker
          - `featureFlags` SpeakerFeatureFlags, required: Feature flags of the speaker
            - `hasMic` boolean, required: Whether the device has a microphone.
        - object
          - `id` union, required
            - string: The primary key of bridge
            - BridgeId[]
          - `modelKey` 'bridge', required: The model key of the bridge
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `platform` string, nullable, required: The bridge platform
          - `clients` string[], required: Array of IoT devices mac that bridge is reserving for
          - `maxClients` number, required: The max acceptable client number of a V2 bridge. V1 bridge does not support this feature.
        - object
          - `id` union, required
            - string: The primary key of sensor
            - SensorId[]
          - `modelKey` 'sensor', required: The model key of the sensor
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `mountType` 'door' | 'window' | 'garage' | 'leak' | 'none', required: Mounting type of the sensor.
          - `batteryStatus` BatteryStatus, required: [DEPRECATED] Use wirelessConnectionState.batteryStatus instead. Battery status.
            - `percentage` number, nullable: Battery charge level from 0 to 100 (%).
            - `isLow` boolean: Low battery charge level flag.
          - `stats` SensorStats, required: Sensor statistics.
            - `light` object: Ambient light value (Lux).
              - …
            - `humidity` object: Ambient light value (Lux).
              - …
            - `temperature` object: Ambient light value (Lux).
              - …
          - `lightSettings` LightSettings, required: Ambient light sensor settings.
            - `isEnabled` boolean: Enable ambient light sensor.
            - `margin` number: Ambient light threshold detection hysteresis margin (Lux). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Ambient light interrupt threshold low level from 1 to 503192 (Lux).
            - `highThreshold` number, nullable: Ambient light interrupt threshold high level from 1 to 503192 (Lux).
          - `humiditySettings` HumiditySettings, required: Relative humidity sensor settings.
            - `isEnabled` boolean: Enable relative humidity sensor.
            - `margin` number: Humidity threshold detection hysteresis margin (%). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Humidity low level threshold from 1 to 99 (%).
            - `highThreshold` number, nullable: Humidity high level threshold from 1 to 99 (%).
          - `temperatureSettings` TemperatureSettings, required: Temperature sensor settings.
            - `isEnabled` boolean: Enable temperature sensor.
            - `margin` number: Temperature threshold detection hysteresis margin (C). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Temperature low level threshold from -39 to 124 (C).
            - `highThreshold` number, nullable: Temperature high level threshold from -39 to 124 (C).
          - `isOpened` boolean, nullable, required: Whether the door/window/garage is opened.
          - `openStatusChangedAt` number, nullable, required: Unix timestamp when the door/window/garage was last opened or closed, nullable.
          - `isMotionDetected` boolean, required: Whether sensor is currently detecting the motion.
          - `motionDetectedAt` number, nullable, required: Unix timestamp when the last motion was detected.
          - `motionSettings` MotionSettings, required: Motion sensor settings.
            - `isEnabled` boolean: Enable motion sensor.
            - `sensitivity` number: Motion sensitivity (0-100) used when system is not armed or when no armed override is set.
            - `sensitivityWhenArmed` number: Motion sensitivity (0-100) used when the system is armed and `hasCustomSensitivityWhenArmed` is true on the sensor.
          - `glassBreakSettings` GlassBreakSettings, required: Glass break sensor settings.
            - `isEnabled` boolean: Enable glass break sensor.
            - `sensitivity` number: Glass break sensitivity (0-100) used when system is not armed or when no armed override is set.
            - `sensitivityWhenArmed` number: Glass break sensitivity (0-100) used when the system is armed and `hasCustomSensitivityWhenArmed` is true on the sensor.
          - `scheduleMode` 'always' | 'when_armed', required: When armed-mode detection runs: `always` or only `when_armed`. Applies to both glass break and motion together.
          - `armProfileIds` string[], nullable, required: When `scheduleMode` is `when_armed`, restricts armed-mode detection to these arm profile ids. Empty or null = all profiles.
          - `hasCustomSensitivityWhenArmed` boolean, required: When true, glass break and motion both use their respective `sensitivityWhenArmed` value while the system is armed.
          - `alarmTriggeredAt` number, nullable, required: Unix timestamp when the smoke or carbon monoxide alarm was triggered, nullable.
          - `alarmSettings` AlarmSettings, required: Smoke and carbon monoxide alarm sensor settings.
            - `isEnabled` boolean: Enable smoke and carbon monoxide alarm sensor.
          - `leakDetectedAt` number, nullable, required: Unix timestamp when the sensor detected a water leak, nullable.
          - `externalLeakDetectedAt` number, nullable, required: Unix timestamp when the sensor detected an external water leak, nullable.
          - `leakSettings` LeakSettings, required: Leak sensor settings.
            - `isInternalEnabled` boolean: Enable internal water leak detection.
            - `isExternalEnabled` boolean: Enable external water leak detection.
          - `tamperingDetectedAt` number, nullable, required: Unix timestamp when the sensor detected tampering, nullable.
          - `wirelessConnectionState` WirelessConnectionState, required: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - object
          - `id` union, required
            - string: The primary key of siren
            - SirenId[]
          - `modelKey` 'siren', required: The model key of the siren
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `volume` integer, required: Volume: a number from 1-100.
          - `ledSettings` SirenLedSettingsExternal, required: Status LED settings.
            - `isEnabled` boolean, required: Enable status LED.
          - `sirenStatus` SirenStatus, required: Status of the siren
            - `isActive` boolean, required: Whether the siren is active.
            - `activatedAt` number, nullable, required: Timestamp when the siren was activated.
            - `duration` union, required: Duration of the siren activation in milliseconds.
              - …
          - `connectionType` 'ucp4' | 'lora', required: The connection type of the siren.
          - `wirelessConnectionState` WirelessConnectionState, required: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - object
          - `id` union, required
            - string: The primary key of fob
            - FobId[]
          - `modelKey` 'fob', required: The model key of the fob
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `awayState` 'ONLINE' | 'RECENTLY_SEEN' | 'NO_RECENT_HEARTBEAT' | 'DEVICE_LOST', required: Fob presence/away state.
          - `buttonLabels` 'securityActions' | 'positionHint', required: Label style applied when this fob is rendered in button selection lists.
          - `featureFlags` FobFeatureFlags, required: Feature flags for the fob.
            - `buttons` string[], required: Available button types on the fob.
          - `wirelessConnectionState` WirelessConnectionState, required: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - object
          - `id` union, required
            - string: The primary key of relay
            - RelayId[]
          - `modelKey` 'relay', required: The model key of the relay
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `ledSettings` RelayLedSettings, required: Status LED settings.
            - `isEnabled` boolean, required: Enable status LED.
          - `outputs` RelayOutput[], required
            - `id` number, required: The channel index of the relay output.
            - `name` string, nullable, required: User-friendly name for this relay output.
            - `type` 'garageDoor' | 'gate' | 'valve' | 'siren' | 'custom', nullable, required: The type of device connected to this relay output.
            - `delay` number, nullable, required: Server-side delay in milliseconds before activation (0 = no delay, null = use default).
            - `pulseDuration` number, nullable, required: Auto-off duration in milliseconds (0 = permanent on until manually turned off, null = use default).
            - `state` 'on' | 'off' | 'offOtp', nullable, required: The current state of the relay output.
            - `rebootState` 'restore' | 'on' | 'off', required: The state the relay output should be set to after a reboot/power cycle.
          - `inputs` RelayInput[], required
            - `id` number, required: The channel index of the relay input.
            - `name` string, nullable, required: User-friendly name for this relay input.
            - `state` 'on' | 'off', nullable, required: The current state of the relay input.
            - `actionTrigger` 'switchedOn' | 'switchedOff', nullable, required: The trigger event that activates the action.
            - `actionType` 'setOutputOn' | 'setOutputOff' | 'toggleOutput' | 'followInput', nullable, required: The type of action to perform when triggered.
            - `actionOutputId` number, nullable, required: The index of the output to control when triggered.
          - `wirelessConnectionState` WirelessConnectionState, required: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - object
          - `id` union, required
            - string: The primary key of device
            - DeviceId[]
          - `modelKey` 'aiprocessor', required: The model key of the aiprocessor
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
        - object
          - `id` union, required
            - string: The primary key of device
            - DeviceId[]
          - `modelKey` 'aiport', required: The model key of the aiport
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
        - object
          - `id` union, required
            - string: The primary key of linkStation
            - LinkStationId[]
          - `modelKey` 'linkstation', required: The model key of the linkstation
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED', required: Connection state of the device.
          - `name` string, required: The name of the device.
          - `mac` string, required: The primary MAC address of the device.
          - `isAlarmHub` boolean, required: Whether the linkstation is an alarm hub.
          - `ledSettings` LinkStationLedSettings, required: Status LED settings.
            - `isEnabled` boolean, required: Whether the status LED is enabled.
          - `lastEvent` number, nullable, required: Timestamp when any last event was detected.
          - `alarmHub` AlarmHubStatus: Alarm hub status and configuration. Only present when isAlarmHub is true.
            - `armed` 'on' | 'off', required
            - `battery` object
              - …
            - `buckboost` 'on' | 'off', required
            - `connector` object
              - …
            - `cover` object
              - …
            - `currentMeterChannelStatus` object, required
            - `currentMeterStatus` object, required
            - `inputPower` object
              - …
            - `poeout` object
              - …
            - `powerMeter` object, required
            - `output` object, required
            - `input` object, required
            - `inputTerminalStatus` object
            - `outputTerminalStatus` object
            - `emergencyTerminalStatus` object, nullable
              - …
            - `auxiliaryPowerTerminalStatus` object
    - DevicesBulkUpdate
      - `type` 'update', required
      - `item` union, required
        - object
          - `id` union, required
            - string: The primary key of nvr
            - NvrId[]
          - `modelKey` 'nvr', required: The model key of the nvr
          - `name` string: The name of the device.
          - `doorbellSettings` DoorbellSettings
            - `defaultMessageText` string: Default text to display on the LCD screen.
            - `defaultMessageResetTimeoutMs` number: Default timeout for resetting LCD screen to the default message.
            - `customMessages` string[]: A list of custom doorbell messages.
            - `customImages` object[]: A list of custom doorbell images for client preview.
              - …
          - `armMode` NvrArmMode
            - `status` 'arming' | 'armed' | 'breach' | 'disabled', required
            - `armProfileId` string, nullable, required
            - `armedAt` number, nullable, required
            - `willBeArmedAt` number, nullable, required
            - `breachDetectedAt` number, nullable, required
            - `breachEventCount` number, required
            - `breachTriggerEventId` string, nullable, required
            - `breachEventId` string, nullable, required
        - object
          - `id` union, required
            - string: The primary key of camera
            - CameraId[]
          - `modelKey` 'camera', required: The model key of the camera
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `isMicEnabled` boolean: Whether or not the microphone on camera is enabled
          - `osdSettings` OsdSettings: On Screen Display settings.
            - `isNameEnabled` boolean, required: Whether to show the name in the OSD.
            - `isDateEnabled` boolean, required: Whether to show the date in the OSD.
            - `isLogoEnabled` boolean, required: Whether to show the logo in the bottom right corner.
            - `isDebugEnabled` boolean, required: Whether debug info is enabled.
            - `overlayLocation` 'topLeft' | 'topMiddle' | 'topRight' | 'bottomLeft' | 'bottomMiddle' | 'bottomRight', required: The location of the overlay on the screen.
          - `ledSettings` LedSettings: LED settings.
            - `isEnabled` boolean, required: Indicates whether the status LED is enabled.
            - `welcomeLed` boolean, required: Indicates whether the welcome LED is enabled.
            - `floodLed` boolean, required: Indicates whether the flood LED is enabled.
          - `lcdMessage` LcdMessageUnion
            - `type` 'LEAVE_PACKAGE_AT_DOOR' | 'DO_NOT_DISTURB' | 'CUSTOM_MESSAGE' | 'IMAGE'
            - `resetAt` number, nullable: UNIX timestamp when doorbell message should be removed (if not set then `nvr.doorbellSettings.defaultMessageResetTimeoutMs` is used, if set to `null` then interpreted as "forever")
            - `text` string
          - `micVolume` number: Mic volume: a number from 0-100.
          - `activePatrolSlot` number: The slot number (0-4) of the patrol that is currently running, or null if no patrol is running
          - `videoMode` 'default' | 'highFps' | 'sport' | 'slowShutter' | 'lprReflex' | 'lprNoneReflex': Current video mode of the camera
          - `hdrType` 'auto' | 'on' | 'off': High Dynamic Range (HDR) mode setting.
          - `featureFlags` CameraFeatureFlags
            - `supportFullHdSnapshot` boolean, required: Whether camera support full HD or higher resolution snapshot
            - `hasHdr` boolean, required: Whether the camera supports High Dynamic Range mode
            - `smartDetectTypes` string[], required: What smart detection object types do the camera support.
            - `smartDetectAudioTypes` string[], required: What smart detection audio types do the camera support.
            - `videoModes` string[], required: A list of supported video modes by the camera
            - `hasMic` boolean, required: Whether the camera has a microphone
            - `hasLedStatus` boolean, required: Whether the camera has LED status
            - `hasSpeaker` boolean, required: Whether the camera has a speaker to support talkback
          - `smartDetectSettings` SmartDetectSettings: Smart detection settings for the camera.
            - `objectTypes` string[], required
            - `audioTypes` string[], required
          - `hasPackageCamera` boolean: Whether the camera has a package camera.
        - object
          - `id` union, required
            - string: The primary key of chime
            - ChimeId[]
          - `modelKey` 'chime', required: The model key of the chime
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `cameraIds` CameraId[]: The list of (doorbell-only) cameras which this chime is paired to.
          - `ringSettings` RingSettings[]: List of custom ringtone settings for (doorbell-only) cameras paired to this chime.
            - `cameraId` string, required: The primary key of camera
            - `repeatTimes` number, required: How many times should the ringtone be repeated
            - `ringtoneId` string, required: The primary key of ringtone
            - `volume` number, required: How loud should the ringtone be played. 0 being silent and 100 the loudest.
        - object
          - `id` union, required
            - string: The primary key of light
            - LightId[]
          - `modelKey` 'light', required: The model key of the light
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `lightModeSettings` LightModeSettings: Settings for when and how your light gets activated
            - `mode` union: When will floodlight turn on.
              - …
            - `enableAt` union: At what time is the lighting mode relevant and acted upon (this has no effect when mode is off).
              - …
          - `lightDeviceSettings` LightDeviceSettings: Hardware settings for light device.
            - `isIndicatorEnabled` boolean: Turn on/off floodlight status LED indicator.
            - `pirDuration` number: How long the light stays on after a motion event in milliseconds.
            - `pirSensitivity` number: How sensitive is the PIR to motion (0-100)%.
            - `ledLevel` number: Brightness level of the main LED (1-6).
          - `isDark` boolean: Whether the light is currently sensing that it's in a dark scene.
          - `isLightOn` boolean: Whether the light has its main LED currently enabled.
          - `isLightForceEnabled` boolean: Whether the light has its main LED currently force-enabled.
          - `lastMotion` number, nullable: Unix timestamp of the last time the PIR motion-detection was triggered.
          - `isPirMotionDetected` boolean: Whether the light PIR is currently detecting motion
          - `camera` string: The primary key of camera
        - object
          - `id` union, required
            - string: The primary key of viewer
            - ViewerId[]
          - `modelKey` 'viewer', required: The model key of the viewer
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `liveview` string: The primary key of liveview
          - `streamLimit` number: Count of maximum supported parallel live streams.
        - object
          - `id` union, required
            - string: The primary key of speaker
            - SpeakerId[]
          - `modelKey` 'speaker', required: The model key of the speaker
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `volume` integer: Speaker volume: a number from 0-100.
          - `micVolume` integer: Mic volume: a number from 0-100.
          - `isMicEnabled` boolean: Whether or not the microphone on the speaker is enabled.
          - `speakerState` SpeakerState: Real-time state of Speaker
            - `status` 'idle' | 'streaming' | 'playing' | 'tts_playing' | 'uploading', required: Current status of the speaker
            - `mode` 'listen' | 'talk', required: Current mode of the speaker
          - `featureFlags` SpeakerFeatureFlags: Feature flags of the speaker
            - `hasMic` boolean, required: Whether the device has a microphone.
        - object
          - `id` union, required
            - string: The primary key of bridge
            - BridgeId[]
          - `modelKey` 'bridge', required: The model key of the bridge
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `platform` string, nullable: The bridge platform
          - `clients` string[]: Array of IoT devices mac that bridge is reserving for
          - `maxClients` number: The max acceptable client number of a V2 bridge. V1 bridge does not support this feature.
        - object
          - `id` union, required
            - string: The primary key of sensor
            - SensorId[]
          - `modelKey` 'sensor', required: The model key of the sensor
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `mountType` 'door' | 'window' | 'garage' | 'leak' | 'none': Mounting type of the sensor.
          - `batteryStatus` BatteryStatus: [DEPRECATED] Use wirelessConnectionState.batteryStatus instead. Battery status.
            - `percentage` number, nullable: Battery charge level from 0 to 100 (%).
            - `isLow` boolean: Low battery charge level flag.
          - `stats` SensorStats: Sensor statistics.
            - `light` object: Ambient light value (Lux).
              - …
            - `humidity` object: Ambient light value (Lux).
              - …
            - `temperature` object: Ambient light value (Lux).
              - …
          - `lightSettings` LightSettings: Ambient light sensor settings.
            - `isEnabled` boolean: Enable ambient light sensor.
            - `margin` number: Ambient light threshold detection hysteresis margin (Lux). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Ambient light interrupt threshold low level from 1 to 503192 (Lux).
            - `highThreshold` number, nullable: Ambient light interrupt threshold high level from 1 to 503192 (Lux).
          - `humiditySettings` HumiditySettings: Relative humidity sensor settings.
            - `isEnabled` boolean: Enable relative humidity sensor.
            - `margin` number: Humidity threshold detection hysteresis margin (%). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Humidity low level threshold from 1 to 99 (%).
            - `highThreshold` number, nullable: Humidity high level threshold from 1 to 99 (%).
          - `temperatureSettings` TemperatureSettings: Temperature sensor settings.
            - `isEnabled` boolean: Enable temperature sensor.
            - `margin` number: Temperature threshold detection hysteresis margin (C). Read-only value decided by sensor implementation.
            - `lowThreshold` number, nullable: Temperature low level threshold from -39 to 124 (C).
            - `highThreshold` number, nullable: Temperature high level threshold from -39 to 124 (C).
          - `isOpened` boolean, nullable: Whether the door/window/garage is opened.
          - `openStatusChangedAt` number, nullable: Unix timestamp when the door/window/garage was last opened or closed, nullable.
          - `isMotionDetected` boolean: Whether sensor is currently detecting the motion.
          - `motionDetectedAt` number, nullable: Unix timestamp when the last motion was detected.
          - `motionSettings` MotionSettings: Motion sensor settings.
            - `isEnabled` boolean: Enable motion sensor.
            - `sensitivity` number: Motion sensitivity (0-100) used when system is not armed or when no armed override is set.
            - `sensitivityWhenArmed` number: Motion sensitivity (0-100) used when the system is armed and `hasCustomSensitivityWhenArmed` is true on the sensor.
          - `glassBreakSettings` GlassBreakSettings: Glass break sensor settings.
            - `isEnabled` boolean: Enable glass break sensor.
            - `sensitivity` number: Glass break sensitivity (0-100) used when system is not armed or when no armed override is set.
            - `sensitivityWhenArmed` number: Glass break sensitivity (0-100) used when the system is armed and `hasCustomSensitivityWhenArmed` is true on the sensor.
          - `scheduleMode` 'always' | 'when_armed': When armed-mode detection runs: `always` or only `when_armed`. Applies to both glass break and motion together.
          - `armProfileIds` string[], nullable: When `scheduleMode` is `when_armed`, restricts armed-mode detection to these arm profile ids. Empty or null = all profiles.
          - `hasCustomSensitivityWhenArmed` boolean: When true, glass break and motion both use their respective `sensitivityWhenArmed` value while the system is armed.
          - `alarmTriggeredAt` number, nullable: Unix timestamp when the smoke or carbon monoxide alarm was triggered, nullable.
          - `alarmSettings` AlarmSettings: Smoke and carbon monoxide alarm sensor settings.
            - `isEnabled` boolean: Enable smoke and carbon monoxide alarm sensor.
          - `leakDetectedAt` number, nullable: Unix timestamp when the sensor detected a water leak, nullable.
          - `externalLeakDetectedAt` number, nullable: Unix timestamp when the sensor detected an external water leak, nullable.
          - `leakSettings` LeakSettings: Leak sensor settings.
            - `isInternalEnabled` boolean: Enable internal water leak detection.
            - `isExternalEnabled` boolean: Enable external water leak detection.
          - `tamperingDetectedAt` number, nullable: Unix timestamp when the sensor detected tampering, nullable.
          - `wirelessConnectionState` WirelessConnectionState: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - object
          - `id` union, required
            - string: The primary key of siren
            - SirenId[]
          - `modelKey` 'siren', required: The model key of the siren
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `volume` integer: Volume: a number from 1-100.
          - `ledSettings` SirenLedSettingsExternal: Status LED settings.
            - `isEnabled` boolean, required: Enable status LED.
          - `sirenStatus` SirenStatus: Status of the siren
            - `isActive` boolean, required: Whether the siren is active.
            - `activatedAt` number, nullable, required: Timestamp when the siren was activated.
            - `duration` union, required: Duration of the siren activation in milliseconds.
              - …
          - `connectionType` 'ucp4' | 'lora': The connection type of the siren.
          - `wirelessConnectionState` WirelessConnectionState: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - object
          - `id` union, required
            - string: The primary key of fob
            - FobId[]
          - `modelKey` 'fob', required: The model key of the fob
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `awayState` 'ONLINE' | 'RECENTLY_SEEN' | 'NO_RECENT_HEARTBEAT' | 'DEVICE_LOST': Fob presence/away state.
          - `buttonLabels` 'securityActions' | 'positionHint': Label style applied when this fob is rendered in button selection lists.
          - `featureFlags` FobFeatureFlags: Feature flags for the fob.
            - `buttons` string[], required: Available button types on the fob.
          - `wirelessConnectionState` WirelessConnectionState: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - object
          - `id` union, required
            - string: The primary key of relay
            - RelayId[]
          - `modelKey` 'relay', required: The model key of the relay
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
          - `ledSettings` RelayLedSettings: Status LED settings.
            - `isEnabled` boolean, required: Enable status LED.
          - `outputs` RelayOutput[]
            - `id` number, required: The channel index of the relay output.
            - `name` string, nullable, required: User-friendly name for this relay output.
            - `type` 'garageDoor' | 'gate' | 'valve' | 'siren' | 'custom', nullable, required: The type of device connected to this relay output.
            - `delay` number, nullable, required: Server-side delay in milliseconds before activation (0 = no delay, null = use default).
            - `pulseDuration` number, nullable, required: Auto-off duration in milliseconds (0 = permanent on until manually turned off, null = use default).
            - `state` 'on' | 'off' | 'offOtp', nullable, required: The current state of the relay output.
            - `rebootState` 'restore' | 'on' | 'off', required: The state the relay output should be set to after a reboot/power cycle.
          - `inputs` RelayInput[]
            - `id` number, required: The channel index of the relay input.
            - `name` string, nullable, required: User-friendly name for this relay input.
            - `state` 'on' | 'off', nullable, required: The current state of the relay input.
            - `actionTrigger` 'switchedOn' | 'switchedOff', nullable, required: The trigger event that activates the action.
            - `actionType` 'setOutputOn' | 'setOutputOff' | 'toggleOutput' | 'followInput', nullable, required: The type of action to perform when triggered.
            - `actionOutputId` number, nullable, required: The index of the output to control when triggered.
          - `wirelessConnectionState` WirelessConnectionState: Wireless connection state including signal quality, battery status, and bridge connection.
            - `signalState` SignalState, required: Signal state.
              - …
            - `batteryStatus` WirelessBatteryStatus, required: Battery status.
              - …
            - `bridge` string, required: The primary key of bridge
        - object
          - `id` union, required
            - string: The primary key of device
            - DeviceId[]
          - `modelKey` 'aiprocessor', required: The model key of the aiprocessor
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
          - `mac` string: The primary MAC address of the device.
        - object
          - `id` union, required
            - string: The primary key of device
            - DeviceId[]
          - `modelKey` 'aiport', required: The model key of the aiport
          - `state` 'CONNECTED' | 'CONNECTING' | 'DISCONNECTED': Connection state of the device.
          - `name` string: The name of the device.
- … truncated; see the full OpenAPI document linked below

## Other responses

- `default`: Error response

---

[API](https://skmtc.dev/ubiquiti/apis/unifi-protect-api.md) - [All operations](https://skmtc.dev/ubiquiti/apis/unifi-protect-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ubiquiti/apis/unifi-protect-api/revisions/e341e1381db1?raw)
