---
title: "Update a Device"
method: PUT
path: "/devices/{deviceId}"
tags: ["Devices"]
---

# Update a Device

`PUT /devices/{deviceId}`

## Request

- Base URL: `https://api.smartthings.com/v1`
- URL: `https://api.smartthings.com/v1/devices/{deviceId}`
- Auth: OAuth 2
  - Implicit: `https://auth-global.api.smartthings.com`
  - Scopes: `w:devices:*`
- TypeScript: <https://skmtc.dev/smartthings/apis/smartthings-api/docs/devices/:deviceId/put.ts> (a function with typed inputs; its response is checked against the schema)

Update the properties of a device.

If the OAuth token used for this call is for a SmartApp that created the device you are attempting to update, the call implicitly has permission for this API.

## Request body

- UpdateDeviceRequest
  - `label` string: The label for the device.
  - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: The ID of the Location where the Device should be moved to. Not all Devices support Location moves. Moving between some Locations may be rejected depending on the data region used.
  - `roomId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: The ID of the Room with which to associate the Device is associated. The Room must be valid for the Location of the Device.
  - `components` UpdateDeviceComponent[]
    - `id` string, required
    - `label` string: The label for the device component.
    - `icon` string: Identifier allowing the user to pick a custom icon for the device component. The icon of the main component represents the device itself
    - `categories` string[], required: A case-sensitive string from the pre-defined list of valid categories [/devicecategories](#/operation/listCategories). Allows the user to redefine the category of the device from what the manufacturer set by default.
  - `indoorMap` IndoorMap: The location of a device on a floorplan map, if any.
    - `coordinates` number[]: The coordinates to be used to map the device.
    - `rotation` number[]: The rotational data for the device.
    - `visible` boolean: Whether or not the device is visible on the map.
    - `data` object: Key value pairs to place additional information.

## Response `200`

Updated device.

- Device
  - `deviceId` string, required: The identifier for the device instance.
  - `name` string: The name that the device integration (Device Handler or SmartApp) defines for the device.
  - `label` string: The name that a user chooses for the device. This defaults to the same value as name.
  - `manufacturerName` string, required: The device manufacturer name.
  - `presentationId` string, required: A non-unique id that is used to help drive UI information.
  - `deviceManufacturerCode` string: The device manufacturer code.
  - `locationId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: The ID of the location with which the device is associated.
  - `ownerId` string: The identifier for the owner of the device instance.
  - `roomId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: The ID of the room with which the device is associated. If the device is not associated with any room, this field will be null.
  - `deviceTypeId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: Deprecated please look under "dth".
  - `deviceTypeName` string: Deprecated please look under "dth".
  - `deviceNetworkType` string: Deprecated please look under "dth".
  - `productId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The device's product ID. If the device is not associated with any product, this field will be null.
  - `brandId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The device's brand ID. If the device is not associated with any brand, this field will be null.
  - `components` DeviceComponent[]: The IDs of all components on the device.
    - `id` string, ^[-_!.~'()*0-9a-zA-Z]{1,36}$, required
    - `label` string: UTF-8 label for the component.
    - `capabilities` DeviceCapabilityReference[], required
      - `id` string, required
      - `version` integer
      - `optional` boolean: An optional capability is available to be enabled for a device, but will not be part of the device record at join time unless specified. In other words, if set to `true`, then devices using this profile can support the capability, but are not required to. If set to `false`, devices using profile must support the capability.
      - `config` CapabilityConfiguration
        - `values` CapabilityConfigurationValue[], required
          - `key` string, required: The path to the preference attribute that is being configured.
          - `range` number[]: The range of values supported by the capability attribute. The range must be a subset of the one defined on the capability. Either `range` OR `enabledValues` must be provided, not both.
          - `enabledValues` string[]: The list of enumerated values that are supported for the capability attribute. The list of supported value must be a subset of the one defined on the capability. Either `range` OR `enabledValues` must be provided, not both.
          - `step` number, double: The incremental step that increases or decreases for numeric values.
      - `restrictions` Restriction: A typed model which describes a restriction pertaining to a platform entity.
        - `tier` integer, required: The restriction level of an entity to limit actions it can take.
        - `historyRetentionTTLDays` integer: The number of days to retain the state before deletion.
        - `visibleWhenRestricted` boolean: Indicate whether or not the entity is visible when restricted.
      - `ephemeral` boolean
      - `status` CapabilityStatus: A map of attribute name to attribute state.
    - `categories` DeviceCategory[], required: Defines the categories for the device. There can be up to two: one defined by the manufacturer, the other a user-selected value.
      - `name` string, required
      - `categoryType` 'manufacturer' | 'user', required
    - `restrictions` Restriction: A typed model which describes a restriction pertaining to a platform entity.
      - `tier` integer, required: The restriction level of an entity to limit actions it can take.
      - `historyRetentionTTLDays` integer: The number of days to retain the state before deletion.
      - `visibleWhenRestricted` boolean: Indicate whether or not the entity is visible when restricted.
    - `optional` boolean: An optional component is available to be enabled for a device, but will not be part of the device record at join time unless specified. In other words, if set to `true`, then devices using this profile can support the component, but are not required to. If set to `false`, devices using profile must support the component. Note that all components, whether optional or not, must have at least one required (i.e. not optional) capability.
  - `createTime` string: The time when the device was created at.
  - `healthState` IdLessHealthState
    - `state` 'ONLINE' | 'OFFLINE': Current state of the device
    - `lastUpdatedDate` string, date-time: Last reported date/time in UTC
  - `parentDeviceId` string: The id of the Parent device.
  - `childDevices` Device[]: Device details for all child devices of the device.
  - `profile` DeviceProfileReference
    - `id` string: The device profile Id
  - `app` AppDeviceDetails
    - `installedAppId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The ID of the installed app that integrates this device.
    - `externalId` string: A field to store an ID from a system external to SmartThings.
    - `profile` DeviceProfileReference
      - `id` string: The device profile Id
  - `ble` BleDeviceDetails
  - `bleD2D` BleD2DDeviceDetails
    - `encryptionKey` string: Security encryption key.
    - `cipher` string: Encryption Algorithm method.
    - `gattCipher` string: Encryption Algorithm method in gatt communication.
    - `advertisingId` string: BLE Advertising Id.
    - `identifier` string: Unique device identifier.
    - `configurationVersion` string
    - `configurationUrl` string
    - `bleDeviceType` string: Specific device type to identify the type of BLE device
    - `metadata` object
  - `dth` DthDeviceDetails
    - `completedSetup` boolean, required: True if the device setup has been completed so the device is ready to use.
    - `deviceNetworkType` string: The device network type.
    - `deviceTypeId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: The identifier for the device's DeviceType.
    - `deviceTypeName` string, required: The name for the device's DeviceType.
    - `executingLocally` boolean: True if the device is executing locally on the hub
    - `hubId` string: The hub that the device is connected to.
    - `installedGroovyAppId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$: The ID of the installed groovy application
    - `networkId` string: The network-specific identifier of the device on the network
    - `networkSecurityLevel` 'UNKNOWN' | 'ZWAVE_LEGACY_NON_SECURE' | 'ZWAVE_S0_LEGACY' | 'ZWAVE_S0_FALLBACK' | 'ZWAVE_S2_UNAUTHENTICATED' | 'ZWAVE_S2_AUTHENTICATED' | 'ZWAVE_S2_ACCESS_CONTROL' | 'ZWAVE_S2_FAILED' | 'ZWAVE_S0_FAILED' | 'ZWAVE_S2_DOWNGRADE' | 'ZWAVE_S0_DOWNGRADE': For hub-connected devices on protocols with multiple security levels, the security level the device was added with. Values ZWAVE_S2_FAILED, ZWAVE_S0_FAILED, ZWAVE_S2_DOWNGRADE, and ZWAVE_S0_DOWNGRADE should be treated as failures and prompt the user to remove and re-add the device. Other Z-Wave values are success cases.
    - `fingerprintType` 'DTH' | 'ZIGBEE_GENERIC' | 'ZIGBEE_MANUFACTURER' | 'ZWAVE_MANUFACTURER' | 'ZWAVE_GENERIC': Type of fingerprint
    - `fingerprintId` string, ^[a-zA-Z0-9 _/\\\-()\\[\\]{}\.]{1,36}$: The identifier for the respective fingerprint, unique per driver
  - `lan` LanDeviceDetails: Device Profile information for Lan devices. This field will be empty if device type is not LAN.
    - `networkId` string: The network-specific identifier of the device on the network
    - `driverId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The ID of the Sprocket driver
    - `executingLocally` boolean: True if the device is executing locally on the hub
    - `hubId` string: The hub that the device is connected to.
    - `provisioningState` 'PROVISIONED' | 'TYPED' | 'DRIVER_SWITCH' | 'NONFUNCTIONAL': Provisioning type for a widget device
    - `fingerprintType` 'DTH' | 'ZIGBEE_GENERIC' | 'ZIGBEE_MANUFACTURER' | 'ZWAVE_MANUFACTURER' | 'ZWAVE_GENERIC': Type of fingerprint
    - `fingerprintId` string, ^[a-zA-Z0-9 _/\\\-()\\[\\]{}\.]{1,36}$: The identifier for the respective fingerprint, unique per driver
  - `zigbee` ZigbeeDeviceDetails: Device Profile information for Zigbee devices. This field will be empty if device type is not ZIGBEE.
    - `eui` string: The EUID of the Zigbee device
    - `networkId` string: The network-specific identifier of the device on the network
    - `driverId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The ID of the Sprocket driver
    - `executingLocally` boolean: True if the device is executing locally on the hub
    - `hubId` string: The hub that the device is connected to.
    - `provisioningState` 'PROVISIONED' | 'TYPED' | 'DRIVER_SWITCH' | 'NONFUNCTIONAL': Provisioning type for a widget device
    - `fingerprintType` 'DTH' | 'ZIGBEE_GENERIC' | 'ZIGBEE_MANUFACTURER' | 'ZWAVE_MANUFACTURER' | 'ZWAVE_GENERIC': Type of fingerprint
    - `fingerprintId` string, ^[a-zA-Z0-9 _/\\\-()\\[\\]{}\.]{1,36}$: The identifier for the respective fingerprint, unique per driver
  - `zwave` ZwaveDeviceDetails: Device Profile information for Z-Wave devices. This field will be empty if device type is not ZWAVE.
    - `networkId` string: The network-specific identifier of the device on the network
    - `driverId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The ID of the Sprocket driver
    - `executingLocally` boolean: True if the device is executing locally on the hub
    - `hubId` string: The hub that the device is connected to.
    - `networkSecurityLevel` 'UNKNOWN' | 'ZWAVE_LEGACY_NON_SECURE' | 'ZWAVE_S0_LEGACY' | 'ZWAVE_S0_FALLBACK' | 'ZWAVE_S2_UNAUTHENTICATED' | 'ZWAVE_S2_AUTHENTICATED' | 'ZWAVE_S2_ACCESS_CONTROL' | 'ZWAVE_S2_FAILED' | 'ZWAVE_S0_FAILED' | 'ZWAVE_S2_DOWNGRADE' | 'ZWAVE_S0_DOWNGRADE': For hub-connected devices on protocols with multiple security levels, the security level the device was added with. Values ZWAVE_S2_FAILED, ZWAVE_S0_FAILED, ZWAVE_S2_DOWNGRADE, and ZWAVE_S0_DOWNGRADE should be treated as failures and prompt the user to remove and re-add the device. Other Z-Wave values are success cases.
    - `provisioningState` 'PROVISIONED' | 'TYPED' | 'DRIVER_SWITCH' | 'NONFUNCTIONAL': Provisioning type for a widget device
    - `manufacturerId` integer: 16-bit manufacturer identifier assigned by the Z-Wave Specification
    - `productType` integer: 16-bit manufacturer defined product type
    - `productId` integer: 16-bit manufacturer defined product identifier
    - `fingerprintType` 'DTH' | 'ZIGBEE_GENERIC' | 'ZIGBEE_MANUFACTURER' | 'ZWAVE_MANUFACTURER' | 'ZWAVE_GENERIC': Type of fingerprint
    - `fingerprintId` string, ^[a-zA-Z0-9 _/\\\-()\\[\\]{}\.]{1,36}$: The identifier for the respective fingerprint, unique per driver
  - `matter` MatterDeviceDetails: Device Profile information for Matter devices. This field will be empty if the device type is not MATTER.
    - `driverId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The ID of the Sprocket driver
    - `hubId` string: The hub that the device is connected to.
    - `provisioningState` 'PROVISIONED' | 'TYPED' | 'DRIVER_SWITCH' | 'NONFUNCTIONAL': Provisioning type for a widget device
    - `networkId` string: The network-specific identifier of the device on the network
    - `executingLocally` boolean: True if the device is executing locally on the hub
    - `uniqueId` string: Vendor-supplied unique identifier. Optional.
    - `vendorId` integer: 16-bit vendor id. Optional.
    - `productId` integer: 16-bit product id. Optional.
    - `serialNumber` string: Device's serial number. Optional.
    - `listeningType` 'ALWAYS' | 'SLEEPY': Listening type for the device. Optional.
    - `supportedNetworkInterfaces` MatterNetworkInterface[]: List of network interfaces. Optional.
    - `version` MatterVersion: Hardware and Software version info for matter devices. Optional.
      - `hardware` integer: 16-bit hardware version. Optional.
      - `hardwareLabel` string: Label for the hardware version. Optional.
      - `software` number: 32-bit software version. Optional.
      - `softwareLabel` string: Label for the hardware version. Optional.
    - `endpoints` MatterEndpoint[]: Available Matter endpoints
      - `endpointId` integer: 16-bit identifier for the endpoint
      - `deviceTypes` MatterEndpointDeviceType[]: List of device types for the endpoint
        - `deviceTypeId` number: 32-bit identifier for the device type
    - `syncDrivers` boolean: Determines whether or not to sync the child device's driver from its parent. Default is true.
    - `fingerprintType` 'DTH' | 'ZIGBEE_GENERIC' | 'ZIGBEE_MANUFACTURER' | 'ZWAVE_MANUFACTURER' | 'ZWAVE_GENERIC': Type of fingerprint
    - `fingerprintId` string, ^[a-zA-Z0-9 _/\\\-()\\[\\]{}\.]{1,36}$: The identifier for the respective fingerprint, unique per driver
  - `hub` HubDeviceDetails: HUB device information. This field will be empty if the device type is not HUB.
    - `hubEui` string, ^[0-9A-F]{16}$, required: The unique identifier for this manufactured hub.
    - `firmwareVersion` string, ^[0-9]\.[0-9]\.[0-9]{3}$, required: The hub's firmware version
    - `hubDrivers` HubDriver[], required: A list of drivers installed on the hub
      - `driverVersion` string: The version of the driver revision being returned
      - `driverId` string, uuid, required: The identifier of the Sprocket driver
      - `channelId` string, uuid: The identifier of the Sprocket channel
    - `hubData` object, required
      - `serialNumber` string: Device's serial number. Optional.
      - `zwaveStaticDsk` string: Zwave static DSK for the hub.
      - `zwaveS2` boolean, required: Whether zwaveS2 is enabled for this hub.
      - `hardwareType` string, required: The hardwareType for this hub
      - `hardwareId` string: The hub's hardware ID
      - `zigbeeFirmware` string: The Zigbee firmware version for this hub
      - `zigbee3` boolean, required: Whether the hub supports zigbee3
      - `zigbeeOta` 'DISABLED' | 'ENABLED' | 'ENABLED_WITH_LIGHTS': Describes state of Zigbee OTA. ENABLED_WITH_LIGHTS is deprecated and should be treated the same as ENABLED.
      - `otaEnable` string: Indicates if Zigbee OTA is enabled.
      - `zigbeeUnsecureRejoin` boolean, required: Whether the hub allows zigbee unsecure rejoin
      - `zigbeeRequiresExternalHardware` boolean: Whether the hub requires external hardware to support zigbee devices
      - `threadRequiresExternalHardware` boolean: Whether the hub requires external hardware to support thread devices
      - `failoverAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `primarySupportAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `secondarySupportAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `zigbeeAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `zwaveAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `threadAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `lanAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `matterAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `localVirtualDeviceAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `childDeviceAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `edgeDriversAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `hubReplaceAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `hubLocalApiAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `hubLocalApiJwkOfflineRetentionSeconds` integer: Target minimum duration, in seconds, that a previously-fetched cloud-issued JWK should remain acceptable for Hub local API JWT verification while the Hub is offline. The Hub refreshes JWKs ahead of expiry to aim for this much offline runway under normal operation. Not a guarantee — if the Hub has never successfully fetched a JWK (e.g. it goes offline immediately after registration, or during a cloud incident), offline JWT verification may be unavailable entirely.
      - `edgeDriverSupportedEndpointApps` EdgeDriverSupportedEndpointApps: The list of Endpoint Apps that provide Edge Driver support that this hub can support. This field may be null.
        - `apps` object[], required: Array of Supported Endpoint App Definitions. The array may be empty.
          - `appName` string, required: The Endpoint App Name
          - `version` string, required: A string indicating some level of versioning. There is no version schema currently enforced.
      - `repeaterReachability` 'Unknown' | 'Unreachable' | 'Reachable': Possible Values for Hub Characteristic "RepeaterReachability" flag
      - `zigbeeManualFirmwareUpdateSupported` boolean: True if the hub supports manual firmware updates of Zigbee devices when automatic updates are disabled.
      - `matterRendezvousHedgeSupported` boolean: Value indicating support of matter rendezvous request over hedge on the hub
      - `matterCommissionerSupport` MatterCommissionerSupport: Indicates the characteristics of Matter commissioning supported by the hub.
        - `version` integer, required
        - `supportedModes` string[], required
      - `matterSoftwareComponentVersion` string: The Matter software component version based on SDK version
      - `matterDeviceDiagnosticsAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `zigbeeDeviceDiagnosticsAvailability` 'Available' | 'Unavailable' | 'Unsupported': Possible Values for Hub Characteristic "Availability" flags
      - `hedgeTlsCertificate` string: A hub's self-signed certificate used for TLS connections on hedge endpoints with clients and other hubs
      - `hub2hubSupportMatrix` object
        - `capabilities` object[], required: A list of hub2hub capabilities a hub supports
          - `name` string, required: The name of the capability
          - `version` integer, required: The version of the capability the hub currently supports
      - `primaryHubDeviceId` string: The primary hub device id for this hub. Null/Empty if hub is not a repeater.
      - `zigbeeChannel` string: The Zigbee channel of the hub.
      - `zigbeePanId` string: The Personal Area Network (PAN) id of the zigbee network the hub is on.
      - `zigbeeEui` string: The unique identifier for this manufactured hub.
      - `zigbeeNodeID` string: The short address of a node in Zigbee network.
      - `zwaveNodeID` string: The address of a single node in the network
      - `zwaveHomeID` string: The common identification of all nodes belonging to one logical Z-Wave network
      - `zwaveSucID` string
      - `zwaveVersion` string
      - `zwaveRegion` string: The global region this zwave radio is operating in.
      - `macAddress` string: MAC address of the hubs network interface.
      - `localIP` string: IP address of the hub.
      - `wifiSsid` string: WiFi SSID.
      - `zigbeeRadioFunctional` boolean: Whether the hub is zigbee radio functional.
      - `zwaveRadioFunctional` boolean: Whether the hub is zwave radio functional.
      - `zigbeeRadioEnabled` boolean: Whether the hub is enabling zigbee radio.
      - `zwaveRadioEnabled` boolean: Whether the hub is enabling zwave radio.
      - `zigbeeRadioDetected` boolean: Whether the hub detected zigbee radio.
      - `zwaveRadioDetected` boolean: Whether the hub detected zwave radio.
      - `enrollmentChannel` 'PUBLIC' | 'BETA': Enrollment channel.
    - `driverId` string, required: The ID of the driver
  - `edgeChild` EdgeChildDeviceDetails: Device Profile information for Edge Child devices. This field will be empty if the device type is not EDGE_CHILD.
    - `driverId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The ID of the Sprocket driver
    - `hubId` string: The hub that the device is connected to.
    - `provisioningState` 'PROVISIONED' | 'TYPED' | 'DRIVER_SWITCH' | 'NONFUNCTIONAL': Provisioning type for a widget device
    - `networkId` string: The network-specific identifier of the device on the network
    - `executingLocally` boolean: True if the device is executing locally on the hub
    - `parentAssignedChildKey` string: The identifier assigned to this edge child device by its parent
    - `fingerprintType` 'DTH' | 'ZIGBEE_GENERIC' | 'ZIGBEE_MANUFACTURER' | 'ZWAVE_MANUFACTURER' | 'ZWAVE_GENERIC': Type of fingerprint
    - `fingerprintId` string, ^[a-zA-Z0-9 _/\\\-()\\[\\]{}\.]{1,36}$: The identifier for the respective fingerprint, unique per driver
  - `ir` IrDeviceDetails
    - `parentDeviceId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The id of the Parent device.
    - `profileId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The id of the profile that describes the device components and capabilities.
    - `ocfDeviceType` string: The OCF Device Type
    - `irCode` string: The id of the ircode
    - `functionCodes` object: List of IR function codes
      - `default` string
    - `childDevices` IrDeviceDetails[]: list of child devices
    - `metadata` object: Key value pairs stored in the conductor for the device. UI Metadata information
  - `irOcf` IrDeviceDetails
    - `parentDeviceId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The id of the Parent device.
    - `profileId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The id of the profile that describes the device components and capabilities.
    - `ocfDeviceType` string: The OCF Device Type
    - `irCode` string: The id of the ircode
    - `functionCodes` object: List of IR function codes
      - `default` string
    - `childDevices` IrDeviceDetails[]: list of child devices
    - `metadata` object: Key value pairs stored in the conductor for the device. UI Metadata information
  - `ocf` OcfDeviceDetails
    - `ocfDeviceType` string: OCF device type
    - `name` string: Name of the device
    - `specVersion` string: OCF spec version
    - `verticalDomainSpecVersion` string: OCF vertical domain spec version
    - `manufacturerName` string: OCF manufacturer name
    - `modelNumber` string: OCF model number
    - `platformVersion` string: OCF platform version
    - `platformOS` string: OCF platform OS
    - `hwVersion` string: OCF platform H/W version
    - `firmwareVersion` string: OCF firmware version
    - `vendorId` string: OCF vendor ID
    - `vendorResourceClientServerVersion` string: OCF vendor resource client/server version
    - `locale` string: Language code
    - `lastSignupTime` string: The time when the device is signed up lastly
    - `transferCandidate` boolean: Whether or not the device is an ownership transfer candidate
    - `additionalAuthCodeRequired` boolean: Whether or not the device requires an additional auth code
    - `modelCode` string: Manufacturer model code of the device
  - `viper` ViperDeviceDetails
    - `uniqueIdentifier` string
    - `manufacturerName` string
    - `modelName` string
    - `swVersion` string
    - `hwVersion` string
    - `endpointAppId` string
  - `group` GroupDeviceDetails
    - `groupName` string
    - `groupType` 'UNDETERMINED' | 'GENERIC' | 'VIDEO_CAMERA' | 'LIGHTING': The type of the group in question "UNDETERMINED" is a default value and is not used during normal operation. Passing "UNDETERMINED" into the API is the same as not passing a group type.
    - `devices` object[]
      - `deviceId` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$, required: GUID representing the device
      - `components` object[]: Components to add to the group
        - `id` string
  - `virtual` VirtualDeviceDetails
    - `name` string: Name of the device
    - `hubId` string: The hub that the device is connected to.
    - `driverId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$: The ID of the Sprocket driver
    - `executingLocally` boolean: True if the device is executing locally on the hub
    - `commandMappings` CommandMappings
      - `commands` CommandMapping[]
        - `capabilityId` string, required: The capability ID.
        - `version` integer, required: The capability version number.
        - `command` string, required: The command name to apply the mapping to on the device
        - `eventValues` AttributeValue[], required: A collection of attribute values, replicator will use these to create device events in serial for the specified command.
          - `attribute` string: The attribute that this command will correspond to
          - `inputType` 'STATIC' | 'ARGUMENT': How will the attribute be provided? Choose either to provide it with a command at runtime or to provide a set value here.
          - `staticValue` object: The argument to be used automatically for this command mapping. Any simple type is accepted.
  - `mqtt` MqttDeviceDetails
    - `hubId` string: Id of the hub
    - `executingLocally` boolean: True if the device is executing locally on the hub
    - `transferCandidate` boolean: Is this device a transfer candidate
    - `authCodeRequired` boolean: Does device backend require auth code to perform transfer. Device set authCodeRequired: Returns true or false. Device didn't set it: Returns null.
  - `type` 'BLE' | 'BLE_D2D' | 'DTH' | 'ENDPOINT_APP' | 'GROUP' | 'HUB' | 'IR' | 'IR_OCF' | 'LAN' | 'MATTER' | 'MOBILE' | 'MQTT' | 'OCF' | 'SAFER' | 'STPRO' | 'PENGYOU' | 'SHP' | 'VIDEO' | 'VIPER' | 'VIRTUAL' | 'WATCH' | 'ZIGBEE' | 'ZWAVE' | 'EDGE_CHILD', required: The type of device integration (may be null). If the type is DTH, the device implementation is a groovy Device Handler and the details are in the "dth" field. If the type is ENDPOINT_APP, the device implementation is a SmartApp and the details are in the "app" field. If the type is IR, the details are in the "ir" field. If the type is IR_OCF, the details are in the "irOcf" field. If the type is OCF, the details are in the "ocf" field. If the type is VIPER, the details are in the "viper" field.
  - `restrictionTier` integer, required: Restriction tier of the device, if any.
  - `allowed` string[]: List of client-facing action identifiers that are currently permitted for the user. If the value of this property is not null, then any action not included in the list value of the property is currently prohibited for the user. If the value of this property is null (or absent), then no permission-related information is being provided. <ul> <li> w:devices - the user can change device details <li> w:devices:locationId - the user can move the device from a location <li> w:devices:roomId - the user can move or remove the device from a room <li> x:devices - the user can execute commands on the device <li> d:devices - the user can uninstall the device </ul>
  - `indoorMap` IndoorMap: The location of a device on a floorplan map, if any.
    - `coordinates` number[]: The coordinates to be used to map the device.
    - `rotation` number[]: The rotational data for the device.
    - `visible` boolean: Whether or not the device is visible on the map.
    - `data` object: Key value pairs to place additional information.
  - `executionContext` 'LOCAL' | 'CLOUD': Where device executes -- locally, in the cloud, or perhaps other in the future. Defaults to CLOUD. - 'LOCAL' - executes on the hub - 'CLOUD' - executes in the cloud
  - `relationships` DeviceRelationship[]: Set of relationships to other devices. These devices behave in a coordinated fashion as described by the properties of the relationship.
    - `deviceId` string: The identifier for the related device.
    - `relationshipType` 'COMBINATION' | 'CHILD': Describes the relationship * COMBINATION - Distinct devices that share the same physical case * CHILD - Representation of a child device of this device
    - `onDelete` 'CASCADE' | 'NONE': Describes how the platform will handle the deletion of the device. * CASCADE - The related device defined by the relationships deviceId property will be deleted as well. * NONE - No changes will happen to the related device, except it will no longer be related to this device.
    - `onLocationMove` 'INCLUDE': Describes how the platform will handle moving the device to a new location. * INCLUDE - The related device defined by the relationships deviceId property will be moved to the new location too.
    - `onOwnershipTransfer` 'INCLUDE': Describes how the platform will handle transferring the device to a new owner. * INCLUDE - The related device defined by the relationships deviceId property will be transferred to the new owner too.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `422`: Unprocessable Entity
- `429`: Too many requests
- `default`: Unexpected error

---

[API](https://skmtc.dev/smartthings/apis/smartthings-api.md) - [All operations](https://skmtc.dev/smartthings/apis/smartthings-api/llms.txt) - [OpenAPI document](https://skmtc.dev/smartthings/apis/smartthings-api/revisions/2788a4236800?raw)
