---
title: "Get a Device Presentation"
method: GET
path: "/presentation"
tags: ["Presentations"]
---

# Get a Device Presentation

`GET /presentation`

## Request

- Base URL: `https://api.smartthings.com/v1`
- URL: `https://api.smartthings.com/v1/presentation`
- Auth: OAuth 2
  - Implicit: `https://auth-global.api.smartthings.com`
  - Scopes: `r:deviceprofiles`, `mobile`, `service`, `r:devices`, `r:devices:*`
- TypeScript: <https://skmtc.dev/smartthings/apis/smartthings-api/docs/presentation/get.ts> (a function with typed inputs; its response is checked against the schema)

Get a device presentation. If Manufacturer Name is omitted, the default `SmartThingsCommunity` will be assumed.

This endpoint currently supports automatic generation of UI-metadata only for those presentations created
through the presentation APIs, and not custom UI-metadata created through the legacy workflow.

Note: This API functionality is in BETA

## Query parameters

- `presentationId` string, required
- `manufacturerName` string
- `deviceId` string
- `view` 'dashboard' | 'detailView' | 'automation'

## Headers

- `If-None-Match` 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}$
- `Accept-Language` string

## Response `200`

The device presentation

- DossierDevicePresentation
  - `manufacturerName` string: Secondary namespacing key for grouping presentations (formerly `mnmn`)
  - `presentationId` string: System generated identifier that corresponds to a device presentation (formerly `vid`)
  - `mnmn` string, required: The name of the manufacturer
  - `vid` string, required: A unique identifier for the presentation of a device. This can be a model number on legacy device integrations, but also may be a system generated UUID based on a device's structure and display configuration.
  - `version` string: The version of the device presentation.
  - `iconUrl` string: DEPRECATED: Please use iconUrl under icons property.
  - `description` string: To provide the explanation of the device configuration/presentation’s purpose or content.
  - `icons` object[]
    - `group` string
    - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
    - `runningConditions` VisibleCondition[]: To specify the condition whether the device is running or not, and a device icon corresponding to running is displayed on the UI.
      - `value` string, required: Notation which indicates the value of an attribute
      - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
      - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
      - `operand` string, required: The value that the visible condition evaluates against.
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
    - `badge` object[]
      - `iconUrl` string, required: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
      - `visibleConditions` VisibleCondition[]
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
        - `operand` string, required: The value that the visible condition evaluates against.
        - `component` string, required
        - `capability` string, required
        - `version` integer: The version number of the capability.
    - `productKeys` object[]: Condition that determines whether to show the corresponding icon or not. It is considered as satisfied if this field does not exist, and the first satisfied icon will be shown.
      - `mnId` string, required
      - `setupId` string, required
  - `dashboard` Dashboard
    - `states` StatesArrayItem[]
      - `label` string, required: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
      - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
        - `key` string, required: The label string to be displayed when the 'key' is evaluated.
        - `value` string, required: The alternative string to be displayed when the `key` is selected.
        - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
        - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
        - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `component` string, required
      - `visibleCondition` VisibleConditionForDashboardState: Use `visibleCondition` to specify under what conditions the resource may be interacted with from the UI. When the specified condition is met, the resource may be interacted with from the UI. If the condition is not met, the resource will appear grayed out and unusable in the UI in the detail view; all other views, including the dashboard, will not display the resource. If `visibleCondition` is omitted, the resource is always displayed and may be interacted with from the UI. The `visibleCondition` object may reference a different component, capability, and version.
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
        - `operand` string, required: The value that the visible condition evaluates against.
        - `component` string, required
        - `capability` string, required
        - `version` integer: The version number of the capability.
        - `isOffline` boolean: To specify whether the `visibleCondition` is to be evaluated when device health is `offline` or not.
      - `composite` boolean: To specify composite use of different state items. If composite is true, multiple states items in the same group are combined to a label.
      - `group` string: The group name to which this belongs. Some complex devices can be shown grouped in the dashboard card. This is used for grouping states and actions in the dashboard.
      - `formatInfo` object[]
        - `key` string, required: Notation which indicates the value of an attribute
        - `type` 'remainingTime' | 'time', required: To specify the type of format to display this attribute value. The corresponding field must also be included. For example, if you specify "remainingTime" here, you must also include the "remainingTime" key and its object definition for formatInfo.
        - `remainingTime` object
          - `timeFormat` string, required
          - `frequency` integer: Specify the frequency time(second) so UI client can know how often to update the remaing time.
        - `time` object
          - `timeFormat` string, required
      - `transient` boolean: To specify whether the status to be displayed is transient or not
    - `actions` ActionsArrayItem[]
      - `displayType` 'pushButton' | 'toggleSwitch' | 'switch' | 'standbyPowerSwitch' | 'statelessPowerToggle' | 'playPause' | 'playStop', required: To specify the type of UI component to display this action or state. The corresponding field must also be included. For example, if you specify "switch" here, you must also include the "switch" key and its object definition for this action or state.
      - `pushButton` PushButton
        - `command` string, required
        - `argument` string
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `toggleSwitch` ToggleSwitchForDashboard: A button style switch element for the UI.
        - `command` object, required: To specify separate commands with no arguments for on and off, use the "on" and "off" fields respectively. To specify a single command, use "name" for the command and the "on" and "off" fields for the arguments.
          - `name` string
          - `on` string, required
          - `off` string, required
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `state` object: To describe "on" and "off" state of a switch
          - `value` string: Notation which indicates the value of an attribute
          - `on` string, required
          - `off` string, required
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
      - `switch` SwitchForDashboard
        - `command` object, required: To specify separate commands with no arguments for on and off, use the "on" and "off" fields respectively. To specify a single command, use "name" for the command and the "on" and "off" fields for the arguments.
          - `name` string
          - `on` string, required
          - `off` string, required
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `state` object: To describe "on" and "off" state of a switch
          - `value` string: Notation which indicates the value of an attribute
          - `on` string, required
          - `off` string, required
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
      - `standbyPowerSwitch` StandbyPowerSwitchForDashboard: A button switch in the UI. Similar to the `toggleSwitch` displayType except for the `off` state is replaced by `standby`.
        - `command` object, required: To specify separate commands with no arguments for on and off, use the "on" and "off" fields respectively. To specify a single command, use "name" for the command and the "on" and "off" fields for the arguments.
          - `name` string
          - `on` string, required
          - `off` string, required
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `state` object: To describe "on" and "off" state of a switch
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `on` string, required: The attribute value that corresponds to the `on` state.
          - `off` string, required: The attribute value that corresponds to the `off` state.
          - `label` string: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
          - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
      - `statelessPowerToggle` StatelessPowerToggleForDashboard: This switch triggers power toggle action without showing any status.
        - `command` string, required
        - `argument` string
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `playPause` PlayPause: Display type for a play/pause button.
        - `command` object, required: To specify separate commands with no arguments for on and off, use the "play" and "pause" fields respectively. To specify a single command, use "name" for the command and the "play" and "pause" fields for the arguments.
          - `name` string
          - `play` string, required
          - `pause` string, required
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `state` object, required
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `play` string, required: The value of "attribute" which indicates playing state. When the attribute value equals to this then UI will show playing state.
          - `pause` string, required: The value of "attribute" which indicates paused state. When the attribute value equals to this then UI will show paused state.
          - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
      - `playStop` PlayStop: To specify separate commands for play and stop, use the "play" and "stop" fields respectively. To specify a single command, use "name" for the command and the " play" and "stop" fields for the arguments.
        - `command` object, required: To specify separate commands with no arguments for on and off, use the "play" and "stop" fields respectively. To specify a single command, use "name" for the command and the "play" and "stop" fields for the arguments.
          - `name` string
          - `play` string, required
          - `stop` string, required
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `state` object, required
          - `value` string, required: Notation which indicates the value of an attribute
          - `play` string, required: The value of "attribute" which indicates playing state. When the attribute value equals to this then UI will show playing state.
          - `stop` string, required: The value of "attribute" which indicates stopped state. When the attribute value equals to this then UI will show stopped state.
          - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
      - `group` string: The group name to which this belongs. Some complex devices can be shown grouped in the dashboard card. This is used for grouping states and actions in the dashboard.
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `component` string
      - `visibleCondition` VisibleCondition: Use `visibleCondition` to specify under what conditions the resource may be interacted with from the UI. When the specified condition is met, the resource may be interacted with from the UI. If the condition is not met, the resource will appear grayed out and unusable in the UI in the detail view; all other views, including the dashboard, will not display the resource. If `visibleCondition` is omitted, the resource is always displayed and may be interacted with from the UI. The `visibleCondition` object may reference a different component, capability, and version.
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
        - `operand` string, required: The value that the visible condition evaluates against.
        - `component` string, required
        - `capability` string, required
        - `version` integer: The version number of the capability.
    - `basicPlus` BasicPlusItemForPresentation[]
      - `displayType` 'camera' | 'tv' | 'light' | 'panel' | 'actions' | 'stateBoard' | 'progressBars', required: To specify the type of UI component to display this basicPlus item. The corresponding field must also be included. For example, if you specify "camera" here, you must also include the "camera" key and its object definition for this basicPlus item.
      - `camera` BasicPlusCamera: To render the captured image and overlay icon in the dashboard card of a camera device.
        - `image` object, required: To specify attribute path for a captured image.
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `value` string, required: Notation which indicates the value of an attribute
        - `overlayIcons` object[]: To describe the overlay icon and the conditions under which it will be displayed.
          - `iconUrl` string, required: Icon Id used to retrieve a overlay icon to be drawn on the camera card.
          - `visibleCondition` VisibleCondition: Use `visibleCondition` to specify under what conditions the resource may be interacted with from the UI. When the specified condition is met, the resource may be interacted with from the UI. If the condition is not met, the resource will appear grayed out and unusable in the UI in the detail view; all other views, including the dashboard, will not display the resource. If `visibleCondition` is omitted, the resource is always displayed and may be interacted with from the UI. The `visibleCondition` object may reference a different component, capability, and version.
            - `value` string, required: Notation which indicates the value of an attribute
            - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
            - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
            - `operand` string, required: The value that the visible condition evaluates against.
            - `component` string, required
            - `capability` string, required
            - `version` integer: The version number of the capability.
      - `tv` BasicPlusTv: To display the remote control on the dashboard card for a TV device.
        - `volume` object: To describe the remote volume control which can trigger "increase" and "decrease" commands of a TV. The user must specify either a "command" field alone or "increase" / "decrease" fields for commands without an argument.
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `label` string
          - `command` object, required
            - `name` string: To specify a single command like "setValue(number)", use "command" field for the command name. If this field is specified then "increase" and "descrease" fields should not be specified. App will calculate desired value when user clicks "+" and "-" button in the UI based on the current value of "attribute" with specified "step".
            - `increase` string: To specify a command for "increase" without an argument.
            - `decrease` string: To specify a command for "decrease" without an argument.
          - `value` string: Notation which indicates the value of an attribute
          - `step` number, double: The incremental step that increases or decreases for numeric values.
          - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
          - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
        - `buttons` ButtonForTv[], required
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `command` string, required
          - `argument` string
          - `iconUrl` string
        - `channel` object: To describe the remote channel control of a TV
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `label` string
          - `value` string: Notation which indicates the value of an attribute
          - `command` object, required
            - `name` string: A name refers to command name and key of the increase or decrease is the argument of the command
            - `increase` string: To specify a name of a command or an argument used to increase TV channels
            - `decrease` string: To specify a name of a command or an argument used to decrease TV channels
        - `directionalPad` object: To describe the remote directional pad for a TV
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `command` object, required
            - `name` string: name refers to command name and keys of the others are the arguments of the command
            - `up` string, required: To specify a name of a command or an argument used to press the key up
            - `down` string, required: To specify a name of a command or an argument used to press the key down
            - `left` string, required: To specify a name of a command or an argument used to press the key left
            - `right` string, required: To specify a name of a command or an argument used to press the key right
            - `ok` string, required: To specify a name of a command or an argument used to press the key ok
        - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
        - `visibleConditions` VisibleCondition[]
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
          - `operand` string, required: The value that the visible condition evaluates against.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
        - `hideDashboardActions` boolean: To hide the action button corresponding to `dashboard.actions` when the card is extended, if the extended area provides sufficient functionality.
      - `light` BasicPlusLight: To display the dimmer and color control on the dashboard card for a lighting device.
        - `dimmer` SliderForLight, required: To display slider display type, at least one of the command and value must be specified.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
          - `step` number, double: The incremental step that increases or decreases for numeric values.
          - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
          - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
          - `command` string, required: The command name that adjusts the dimmer or color temperature level of a lighting device.
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
          - `label` string, required
        - `colorTemperature` SliderForLight: To display slider display type, at least one of the command and value must be specified.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
          - `step` number, double: The incremental step that increases or decreases for numeric values.
          - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
          - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
          - `command` string, required: The command name that adjusts the dimmer or color temperature level of a lighting device.
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
          - `label` string, required
        - `colorControl` object: To display the dimmer and color control on the dashboard card for a lighting device.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `command` string, required
          - `value` string: Notation which indicates the value of an attribute
          - `color` object, required: To specify the values of attributes which indecate the hue and saturation that make up the color.
            - `hue` string: Notation which indicates the value of an attribute
            - `saturation` string: Notation which indicates the value of an attribute
        - `hideDashboardActions` boolean: To hide the action button corresponding to `dashboard.actions` when the card is extended, if the extended area provides sufficient functionality.
      - `actions` object[]: To render the action component to be displayed only with the extended dashboard card.
        - `command` string, required
        - `argument` string
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `iconUrl` string
        - `component` string, required
        - `capability` string, required
        - `version` integer: The version number of the capability.
        - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
        - `visibleConditions` VisibleCondition[]
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
          - `operand` string, required: The value that the visible condition evaluates against.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
      - `stateBoard` BasicPlusStateBoardItem[]: To render the `StateBoard` in order to display multiple states of device as a unified component on the extended device card.
        - `capability` string, required
        - `version` integer: The version number of the capability.
        - `component` string, required
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `label` string, required
        - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the state board.
        - `colors` BasicPlusStateBoardColors[]
          - `color` string, required: The `color` is based on the `RGB-HEX code`. So `#FFA500` code can be defined for the `orange` color.
          - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
          - `visibleConditions` VisibleConditionForColorItem[]: Use `visibleConditions` to specify under what conditions the font color determine. If `visibleConditions` is omitted, the color is always determined for the font color.
            - `referTo` object: To specify a `referTo` that contains another `component/capability/version/attribute` to be referred for determining the color item. If this is omitted then `component/capability/version/attribute` specified in the `StateBoard item` is referred.
              - …
            - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
            - `operand` string, required: The value that the visible condition evaluates against.
        - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
        - `visibleConditions` VisibleCondition[]
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
          - `operand` string, required: The value that the visible condition evaluates against.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
      - `progressBars` object[]: To render the progress bar component to be displayed only with the extended dashboard card.
        - `headers` BasicPlusProgressBarsStateItem[]: To specify the introductory labels of the progress bar.
          - `label` string, required: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
          - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `formatInfo` object[]
            - `key` string, required: Notation which indicates the value of an attribute
            - `type` 'remainingTime' | 'time', required: To specify the type of format to display this attribute value. The corresponding field must also be included. For example, if you specify "remainingTime" here, you must also include the "remainingTime" key and its object definition for formatInfo.
            - `remainingTime` object
              - …
            - `time` object
              - …
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the progress bar.
          - `placement` 'START' | 'END': To specify the placement of label
        - `bar` BasicPlusProgressBarsBarItem: To render the bar UI displaying the current progress status relative to the total amount specified by `range` of work done.
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `footers` BasicPlusProgressBarsStateItem[]: To specify supplementary information of the progress bar.
          - `label` string, required: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
          - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `formatInfo` object[]
            - `key` string, required: Notation which indicates the value of an attribute
            - `type` 'remainingTime' | 'time', required: To specify the type of format to display this attribute value. The corresponding field must also be included. For example, if you specify "remainingTime" here, you must also include the "remainingTime" key and its object definition for formatInfo.
            - `remainingTime` object
              - …
            - `time` object
              - …
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the progress bar.
          - `placement` 'START' | 'END': To specify the placement of label
        - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
        - `visibleConditions` VisibleCondition[]
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
          - `operand` string, required: The value that the visible condition evaluates against.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
      - `panel` PanelForDevicePresentation: To render the multiple parts of UI components to display each action or state in the dashboard card.
        - `items` object[], required
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `component` string, required
          - `label` string
          - `displayType` 'stepper' | 'list' | 'pushButton' | 'invokeButton' | 'state' | 'slider' | 'empty', required: To specify the type of UI component to display this item in panel. The corresponding field must also be included. For example, if you specify "stepper" here, you must also include the "stepper" key and its object definition for this part.
          - `stepper` StepperForPanelItem: This display type creates a stepper which can trigger "increase" and "decrease" commands. The user must specify either a "command" field alone or "increase" / "decrease" fields for commands without an argument.
            - `command` object, required
              - …
            - `step` number, double, required: The incremental step that increases or decreases for numeric values.
            - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
            - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
            - `state` object, required
              - …
            - `size` '2x1' | '3x1' | '4x1' | '1x2' | '2x2', required: To specify the size of UI component to display this item in panel. The notation of `size` is the combination of width and height.(`width x height`) The range of width value is from 1 to 4 and height value is from 1 to 2. The bigger size value, the more space it occupies in the panel.
          - `list` ListForPanelItem: To specify available values shown in a drop-down UI. User can select one of the value among the list items
            - `command` object, required
              - …
            - `state` object
              - …
            - `size` '2x1' | '3x1' | '4x1' | '1/3x1' | '2x2', required: To specify the size of UI component to display this item in panel. The notation of `size` is the combination of width and height.(`width x height`) The range of width value is from 1 to 4 and height value is from 1 to 2. The bigger size value, the more space it occupies in the panel.
          - `pushButton` PushButtonForPanelItem
            - `command` string, required
            - `argument` string
            - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
            - `iconUrl` string
            - `size` '1x1' | '2x1' | '3x1' | '4x1' | '1/3x1' | '2x2', required: To specify the size of UI component to display this item in panel. The notation of `size` is the combination of width and height.(`width x height`) The range of width value is from 1 to 4 and height value is from 1 to 2. The bigger size value, the more space it occupies in the panel.
          - `invokeButton` InvokeButtonForPanelItem: Defines a UI component that displays executable commands and allows users to invoke them.
            - `value` string, required: The path to an attribute value(`{attribute}.value`) used as context for command selection.
            - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
            - `refreshInterval` integer: To specify the interval time (in seconds) for refreshing the attribute value in the UI client.
            - `commands` CommandsForInvokeButton[], required
              - …
            - `size` '1x1' | '2x1' | '3x1' | '4x1' | '1/3x1' | '2x2', required: To specify the size of UI component to display this item in panel. The notation of `size` is the combination of width and height.(`width x height`) The range of width value is from 1 to 4 and height value is from 1 to 2. The bigger size value, the more space it occupies in the panel.
          - `state` StateForPanelItem: This display type creates a state UI that shows state only.
            - `label` string, required: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
            - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
            - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
              - …
            - `size` '2x1', required: To specify the size of UI component to display this item in panel. The notation of `size` is the combination of width and height.(`width x height`) The range of width value is from 1 to 4 and height value is from 1 to 2. The bigger size value, the more space it occupies in the panel.
          - `slider` SliderForPanelItem: To display slider display type, at least one of the command and value must be specified.
            - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
            - `step` number, double: The incremental step that increases or decreases for numeric values.
            - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
            - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
            - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
              - …
            - `command` string, required: The command which will send the value of the slider as an argument
            - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
            - `value` string: Notation which indicates the value of an attribute
            - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
            - `size` '4x1' | '4x2', required: To specify the size of UI component to display this item in panel. The notation of `size` is the combination of width and height.(`width x height`) The range of width value is from 1 to 4 and height value is from 1 to 2. The bigger size value, the more space it occupies in the panel.
          - `empty` EmptyForPanelItem
            - `size` '1x1' | '2x1' | '3x1' | '4x1' | '1/3x1' | '1x2' | '2x2', required: To specify the size of UI component to display this item in panel. The notation of `size` is the combination of width and height.(`width x height`) The range of width value is from 1 to 4 and height value is from 1 to 2. The bigger size value, the more space it occupies in the panel.
          - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
          - `visibleConditions` VisibleCondition[]
            - `value` string, required: Notation which indicates the value of an attribute
            - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
            - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
            - `operand` string, required: The value that the visible condition evaluates against.
            - `component` string, required
            - `capability` string, required
            - `version` integer: The version number of the capability.
          - `hideOnUnmatch` boolean: A flag indicating the two ways of unavailability for a UI component when the `visibleCondition(s)` is not met. The `true` indicates that target UI component is completely hidden. On the other hand, the `false` indicates that target UI component is still displayed but in an uncontrollable state.
        - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
        - `visibleConditions` VisibleCondition[]
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
          - `operand` string, required: The value that the visible condition evaluates against.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
        - `hideDashboardActions` boolean: To hide the action button corresponding to `dashboard.actions` when the card is extended, if the extended area provides sufficient functionality.
    - `groupVisibleConditions` GroupVisibleConditions: Use `visibleCondition` to specify under what conditions the resource may be interacted with from the UI. When the specified condition is met, the resource may be interacted with from the UI. If the condition is not met, the resource will appear grayed out and unusable in the UI in the detail view; all other views, including the dashboard, will not display the resource. If `visibleCondition` is omitted, the resource is always displayed and may be interacted with from the UI. The `visibleCondition` object may reference a different component, capability, and version.
      - `value` string, required: Notation which indicates the value of an attribute
      - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
      - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
      - `operand` string, required: The value that the visible condition evaluates against.
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
  - `detailView` DetailViewListItem[]
    - `capability` string, required
    - `version` integer: The version number of the capability.
    - `label` string, required
    - `displayType` 'toggleSwitch' | 'standbyPowerSwitch' | 'switch' | 'slider' | 'pushButton' | 'textButton' | 'playPause' | 'playStop' | 'list' | 'textField' | 'numberField' | 'stepper' | 'state' | 'multiArgCommand', required: To specify the type of UI component to display this action or state. The corresponding field must also be included. For example, if you specify "switch" here, you must also include the "switch" key and its object definition for this action or state.
    - `toggleSwitch` ToggleSwitch: A button style switch element for the UI.
      - `command` object, required: To specify separate commands with no arguments for on and off, use the "on" and "off" fields respectively. To specify a single command, use "name" for the command and the "on" and "off" fields for the arguments.
        - `name` string
        - `on` string, required
        - `off` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `state` object: To describe "on" and "off" state of a switch
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `on` string, required: The attribute value that corresponds to the `on` state.
        - `off` string, required: The attribute value that corresponds to the `off` state.
        - `label` string: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
    - `standbyPowerSwitch` StandbyPowerSwitch: A button switch in the UI. Similar to the `toggleSwitch` displayType except for the `off` state is replaced by `standby`.
      - `command` object, required: To specify separate commands with no arguments for on and off, use the "on" and "off" fields respectively. To specify a single command, use "name" for the command and the "on" and "off" fields for the arguments.
        - `name` string
        - `on` string, required
        - `off` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `state` object: To describe "on" and "off" state of a switch
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `on` string, required: The attribute value that corresponds to the `on` state.
        - `off` string, required: The attribute value that corresponds to the `off` state.
        - `label` string: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
    - `switch` Switch
      - `command` object, required: To specify separate commands with no arguments for on and off, use the "on" and "off" fields respectively. To specify a single command, use "name" for the command and the "on" and "off" fields for the arguments.
        - `name` string
        - `on` string, required
        - `off` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `state` object: To describe "on" and "off" state of a switch
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `on` string, required: The attribute value that corresponds to the `on` state.
        - `off` string, required: The attribute value that corresponds to the `off` state.
        - `label` string: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
    - `slider` SliderType: To display slider display type, at least one of the command and value must be specified.
      - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
      - `step` number, double: The incremental step that increases or decreases for numeric values.
      - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
      - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
      - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
        - `key` string, required: The label string to be displayed when the 'key' is evaluated.
        - `value` string, required: The alternative string to be displayed when the `key` is selected.
        - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
        - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
        - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
      - `command` string: The command which will send the value of the slider as an argument
      - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `value` string: Notation which indicates the value of an attribute
      - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
    - `pushButton` PushButton
      - `command` string, required
      - `argument` string
      - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
    - `textButton` TextButton: To specify available values shown in buttons with text label.
      - `command` string: To specify command name with argument(s) and key of the buttons is the argument of the command. If this is omitted then keys at `buttons` array are the enumCommands without arguments.
      - `value` string: Notation which indicates the value of an attribute
      - `buttons` object[], required
        - `key` string, required: A command name or an argument name of a command to be mapped with this button.
        - `label` string, required: The alternative string to be displayed when the `key` is evaluated.
        - `state` string: To focus this button according to the current status of given attribute which is mapped with this button.
      - `supportedValues` string: The attribute name specified in supportedValues is an array that has values supported at runtime.
    - `playPause` PlayPause: Display type for a play/pause button.
      - `command` object, required: To specify separate commands with no arguments for on and off, use the "play" and "pause" fields respectively. To specify a single command, use "name" for the command and the "play" and "pause" fields for the arguments.
        - `name` string
        - `play` string, required
        - `pause` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `state` object, required
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `play` string, required: The value of "attribute" which indicates playing state. When the attribute value equals to this then UI will show playing state.
        - `pause` string, required: The value of "attribute" which indicates paused state. When the attribute value equals to this then UI will show paused state.
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
    - `playStop` PlayStop: To specify separate commands for play and stop, use the "play" and "stop" fields respectively. To specify a single command, use "name" for the command and the " play" and "stop" fields for the arguments.
      - `command` object, required: To specify separate commands with no arguments for on and off, use the "play" and "stop" fields respectively. To specify a single command, use "name" for the command and the "play" and "stop" fields for the arguments.
        - `name` string
        - `play` string, required
        - `stop` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `state` object, required
        - `value` string, required: Notation which indicates the value of an attribute
        - `play` string, required: The value of "attribute" which indicates playing state. When the attribute value equals to this then UI will show playing state.
        - `stop` string, required: The value of "attribute" which indicates stopped state. When the attribute value equals to this then UI will show stopped state.
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
    - `list` ListForDetailView: To specify available values shown in a drop-down UI. User can select one of the value among the list items
      - `command` object, required
        - `name` string: name refers to command name and key of the alternatives is the argument of the command
        - `description` string: Additional description of a command. This description is shown in the list.
        - `alternatives` AlternativeItem[], required: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `supportedValues` string: The attribute name specified in supportedValues is an array that has values supported at runtime.
      - `state` object
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `alternatives` AlternativeItem[], required: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
    - `textField` TextField: This display type creates textfield that the user enters a new value and that the new value is passed as an argument to the command
      - `command` string, required
      - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `value` string: Notation which indicates the value of an attribute
      - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
      - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
    - `numberField` NumberField: This display type creates numberfield that the user enters a new value and that the new value is passed as an argument to the command
      - `value` string: Notation which indicates the value of an attribute
      - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
      - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
      - `command` string, required
      - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
      - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
    - `stepper` Stepper: This display type creates a stepper which can trigger "increase" and "decrease" commands. The user must specify either a "command" field alone or "increase" / "decrease" fields for commands without an argument.
      - `command` object, required
        - `name` string: To specify a single command like "setValue(number)", use "command" field for the command name. If this field is specified then "increase" and "descrease" fields should not be specified. App will calculate desired value when user clicks "+" and "-" button in the UI based on the current value of "attribute" with specified "step".
        - `increase` string: To specify a command for "increase" without an argument.
        - `decrease` string: To specify a command for "decrease" without an argument.
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
      - `step` number, double, required: The incremental step that increases or decreases for numeric values.
      - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
      - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
      - `value` string: Notation which indicates the value of an attribute
      - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
    - `state` State: This display type creates a state UI that shows state only.
      - `label` string, required: This displays a string. This can be a formatted string with variables. Example: `{{attribute.value}} {{attribute.unit}}` (where `attribute` is the name of an attribute in your capability)
      - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
      - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
        - `key` string, required: The label string to be displayed when the 'key' is evaluated.
        - `value` string, required: The alternative string to be displayed when the `key` is selected.
        - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
        - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
        - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
    - `multiArgCommand` MultiArgCommand: To specify multiple arguments command and displayType of each argument.
      - `command` string, required: The name of a command that is executed with multiple arguments.
      - `arguments` object[], required
        - `label` string, required
        - `displayType` 'slider' | 'list' | 'textField' | 'numberField', required: Specify the type of UI component to use to display this action or state. The corresponding field must also be included. For example, if you specify "list" here, you must also include the "list" key and its object definition for this action or state.
        - `slider` SliderForArgument: To display slider display type, at least one of the command and value must be specified.
          - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
          - `step` number, double: The incremental step that increases or decreases for numeric values.
          - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
          - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
          - `name` string, required: The name of a command argument. If the argument's type is an object, its sub-properties can be defined using dot notation (e.g. `argumentName.propertyName`).
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
          - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `list` ListForArgument
          - `alternatives` AlternativeItem[], required: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
            - `key` string, required: The label string to be displayed when the 'key' is evaluated.
            - `value` string, required: The alternative string to be displayed when the `key` is selected.
            - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
            - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
            - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
          - `supportedValues` string: The attribute name specified in supportedValues is an array that has values supported at runtime.
          - `name` string, required: The name of a command argument. If the argument's type is an object, its sub-properties can be defined using dot notation (e.g. `argumentName.propertyName`).
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `textField` TextFieldForArgument
          - `name` string, required: The name of a command argument. If the argument's type is an object, its sub-properties can be defined using dot notation (e.g. `argumentName.propertyName`).
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
          - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `numberField` NumberFieldForArgument
          - `name` string, required: The name of a command argument. If the argument's type is an object, its sub-properties can be defined using dot notation (e.g. `argumentName.propertyName`).
          - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
          - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
          - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
          - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
      - `supportedValues` string: The attribute name specified in supportedValues is an array that has arguments supported at runtime.
    - `component` string
    - `visibleCondition` VisibleConditionForDetailView: Use `visibleCondition` to specify under what conditions the resource may be interacted with from the UI. When the specified condition is met, the resource may be interacted with from the UI. If the condition is not met, the resource will appear grayed out and unusable in the UI in the detail view; all other views, including the dashboard, will not display the resource. If `visibleCondition` is omitted, the resource is always displayed and may be interacted with from the UI. The `visibleCondition` object may reference a different component, capability, and version.
      - `value` string, required: Notation which indicates the value of an attribute
      - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
      - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
      - `operand` string, required: The value that the visible condition evaluates against.
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `hideOnUnmatch` boolean: A flag indicating the two ways of unavailability for a UI component when the `visibleCondition(s)` is not met. The `true` indicates that target UI component is completely hidden. On the other hand, the `false` indicates that target UI component is still displayed but in an uncontrollable state.
  - `automation` Automation: In the SmartThings app, you can build custom Automations to automatically trigger actions when certain condition regarding device's state is met.
    - `conditions` AutomationListItem[]: To specify the conditions of device state to trigger actions in the automation view of SmartThings app.
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `label` string, required
      - `description` string: To specify the introductory description for the condition or action item.
      - `displayType` 'slider' | 'list' | 'dynamicList' | 'numberField' | 'textField' | 'enumSlider' | 'numberPicker', required: To specify the type of UI component to display this action or state. The corresponding field must also be included. For example, if you specify "switch" here, you must also include the "switch" key and its object definition for this action or state.
      - `slider` SliderForAutomationCondition: To display slider display type, at least one of the command and value must be specified.
        - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `step` number, double: The incremental step that increases or decreases for numeric values.
        - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
        - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `list` ListForAutomationCondition
        - `alternatives` AlternativeItem[], required: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `supportedValues` string: The attribute name specified in supportedValues is an array that has values supported at runtime.
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `description` string: To specify informative descriptions for the condition or action item.
        - `multiSelectable` boolean: To specify whether to allow multiple selection within a list or not. Default value is false.
      - `dynamicList` DynamicListForAutomationCondition
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the items in given `supportedValues` array. The data type is automatically assigned from the given capability definition.
        - `supportedValues` SupportedValuesForDynamicList, required: To specify the list of dynamic items provided by the device at runtime and make-up option(`valueMap`) if necessary. If the `valueMap` is omitted then the supported values specified in `value` itself become both a key and value.
          - `value` string, required
          - `valueMap` object: To specify the make-up of a map when the provided value is an array of maps.
            - `key` string, required: Notation which indicates the value of an attribute, command or argument.
            - `value` string, required: Notation which indicates the value to be displayed on UI
        - `alternatives` AlternativeItem[]: To assign the alternative properties to specific keys among the dynamic items provided by `supportedValues`. If the value of the key for the given alternatives is not found, the original value from `supportedValues` is used as it is.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `description` string: To specify informative descriptions for the condition or action item.
        - `multiSelectable` boolean: To specify whether to allow multiple selection within a list or not. Default value is false.
      - `numberField` NumberFieldForAutomationCondition
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
        - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `textField` TextFieldForAutomationCondition
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `enumSlider` EnumSliderForAutomationCondition: This display type creates slider composed with enumeration that the user can set an automation to compare between enumeration and device's status. An alternatives array should be `ascending` order.
        - `alternatives` AlternativeItem[], required: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `value` string, required: Notation which indicates the value of an attribute
        - `supportedOperators` object[]
          - `operator` 'EQUALS' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN_OR_EQUALS', required: The operator to be supported by this display type.
          - `label` string, required: The alternative string of given operator.
      - `numberPicker` NumberPickerForAutomationCondition: To display the scrollable lists of distinct numbers that user can choose from.
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `unit` string: Notation which indicates the unit
        - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `emphasis` boolean: The effect used to emphasize this resource widget. The default value is false. If the emphasis value is true and this object has alternatives, a list will appear without a label
      - `exclusion` ExcludedConditionItem[]: To exclude specified automation in `exclude` when this item is selected by the user.
        - `value` object: To express that a specific value is selected
        - `exclude` object[], required
          - `component` string
          - `capability` string, required
          - `version` integer
          - `attributes` object[]
            - `name` string, required: Attribute name to be excluded
            - `excludedValues` string[]: To exclude only some values of the attribute
      - `component` string
      - `visibleCondition` VisibleCondition: Use `visibleCondition` to specify under what conditions the resource may be interacted with from the UI. When the specified condition is met, the resource may be interacted with from the UI. If the condition is not met, the resource will appear grayed out and unusable in the UI in the detail view; all other views, including the dashboard, will not display the resource. If `visibleCondition` is omitted, the resource is always displayed and may be interacted with from the UI. The `visibleCondition` object may reference a different component, capability, and version.
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
        - `operand` string, required: The value that the visible condition evaluates against.
        - `component` string, required
        - `capability` string, required
        - `version` integer: The version number of the capability.
    - `actions` ActionListItem[]: To specify the actions of device control based on the device state in the automation view of SmartThings app.
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `label` string, required
      - `description` string: To specify the introductory description for the condition or action item.
      - `displayType` 'slider' | 'list' | 'dynamicList' | 'textField' | 'numberField' | 'numberPicker' | 'multiArgCommand', required: To specify the type of UI component to display this action or state. The corresponding field must also be included. For example, if you specify "switch" here, you must also include the "switch" key and its object definition for this action or state.
      - `slider` SliderForAutomationAction: To display slider display type, at least one of the command and value must be specified.
        - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `step` number, double: The incremental step that increases or decreases for numeric values.
        - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
        - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `command` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `list` ListForAutomationAction
        - `alternatives` AlternativeItem[], required: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `supportedValues` string: The attribute name specified in supportedValues is an array that has values supported at runtime.
        - `command` string: The name of the command that is called when an item is chosen from the list
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `dynamicList` DynamicListForAutomationAction
        - `command` string: To specify a command name with argument(s) and keys of the dynamic items specified in `supportedValues` are the arguments of the command. If this is omitted then keys at dynamic items specified in `supportedValues` are the enumCommands without arguments.
        - `argumentType` string: The data type of the items in given `supportedValues` array. The data type is automatically assigned from the given capability definition.
        - `supportedValues` SupportedValuesForDynamicList, required: To specify the list of dynamic items provided by the device at runtime and make-up option(`valueMap`) if necessary. If the `valueMap` is omitted then the supported values specified in `value` itself become both a key and value.
          - `value` string, required
          - `valueMap` object: To specify the make-up of a map when the provided value is an array of maps.
            - `key` string, required: Notation which indicates the value of an attribute, command or argument.
            - `value` string, required: Notation which indicates the value to be displayed on UI
        - `alternatives` AlternativeItem[]: To assign the alternative properties to specific keys among the dynamic items provided by `supportedValues`. If the value of the key for the given alternatives is not found, the original value from `supportedValues` is used as it is.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `textField` TextFieldForAutomationAction
        - `command` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `numberField` NumberFieldForAutomationAction
        - `command` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
        - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
          - `key` string, required: The label string to be displayed when the 'key' is evaluated.
          - `value` string, required: The alternative string to be displayed when the `key` is selected.
          - `type` 'inactive' | 'active': This shows the active or inactive state of the value. `active` is shown in color, while `inactive` value is shown dimmed in the UI view. For example, Motion sensor capability would have `detected` as active and in color and `clear` as inactive and dimmed so that a user can see the `detected` event easily.
          - `iconUrl` string: Icon Id used to retrieve icons to be drawn on the UI Client. If iconUrl is omitted, then UI client shows default icon of device's category.
          - `description` string: Additional description for each value. This description is shown in detail view or automation under this particular key.
        - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `numberPicker` NumberPickerForAutomationAction: To display the scrollable lists of distinct numbers that user can choose from.
        - `command` string, required
        - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
        - `unit` string: Notation which indicates the unit
        - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
        - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
        - `description` string: To specify informative descriptions for the condition or action item.
      - `multiArgCommand` MultiArgCommand: To specify multiple arguments command and displayType of each argument.
        - `command` string, required: The name of a command that is executed with multiple arguments.
        - `arguments` object[], required
          - `label` string, required
          - `displayType` 'slider' | 'list' | 'textField' | 'numberField', required: Specify the type of UI component to use to display this action or state. The corresponding field must also be included. For example, if you specify "list" here, you must also include the "list" key and its object definition for this action or state.
          - `slider` SliderForArgument: To display slider display type, at least one of the command and value must be specified.
            - `range` number[], required: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
            - `step` number, double: The incremental step that increases or decreases for numeric values.
            - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
            - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
            - `name` string, required: The name of a command argument. If the argument's type is an object, its sub-properties can be defined using dot notation (e.g. `argumentName.propertyName`).
            - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
            - `alternatives` AlternativeItem[]: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
              - …
          - `list` ListForArgument
            - `alternatives` AlternativeItem[], required: A collection of strings that can replace the attribute value in the `label` or `value` or `unit`. Must be human-readable for the UI client to display.
              - …
            - `supportedValues` string: The attribute name specified in supportedValues is an array that has values supported at runtime.
            - `name` string, required: The name of a command argument. If the argument's type is an object, its sub-properties can be defined using dot notation (e.g. `argumentName.propertyName`).
            - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
          - `textField` TextFieldForArgument
            - `name` string, required: The name of a command argument. If the argument's type is an object, its sub-properties can be defined using dot notation (e.g. `argumentName.propertyName`).
            - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
            - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
          - `numberField` NumberFieldForArgument
            - `name` string, required: The name of a command argument. If the argument's type is an object, its sub-properties can be defined using dot notation (e.g. `argumentName.propertyName`).
            - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).
            - `argumentType` string: The data type of the `argument`. The data type is automatically assigned from the given capability definition.
            - `range` number[]: The inclusive range of a numeric value or bounds of a string depending on the data type it is applied to.
            - `supportedValues` string: To specify an attribute path that has a dynamic numeric constraint. The constraint can be updated in real-time to reflect changing values and ranges.
        - `supportedValues` string: The attribute name specified in supportedValues is an array that has arguments supported at runtime.
      - `emphasis` boolean: The effect used to emphasize this resource widget. The default value is false. If the emphasis value is true and this object has alternatives, a list will appear without a label
      - `component` string
      - `visibleCondition` VisibleCondition: Use `visibleCondition` to specify under what conditions the resource may be interacted with from the UI. When the specified condition is met, the resource may be interacted with from the UI. If the condition is not met, the resource will appear grayed out and unusable in the UI in the detail view; all other views, including the dashboard, will not display the resource. If `visibleCondition` is omitted, the resource is always displayed and may be interacted with from the UI. The `visibleCondition` object may reference a different component, capability, and version.
        - `value` string, required: Notation which indicates the value of an attribute
        - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
        - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
        - `operand` string, required: The value that the visible condition evaluates against.
        - `component` string, required
        - `capability` string, required
        - `version` integer: The version number of the capability.
      - `exclusion` ExcludedActionItem[]: To exclude specified automation in `exclude` when this item is selected by the user.
        - `value` object: To express that a specific value is selected
        - `exclude` object[], required
          - `component` string: To specify target component to exclude, if it's omitted then all components with this capability will be excluded
          - `capability` string, required
          - `version` integer
          - `commands` object[]
            - `name` string, required
            - `excludedValues` string[]: To exclude only some values of the attribute
    - `descriptions` DescriptionsInAutomation: To specify informative descriptions for condition or action in automation view
      - `conditions` DescriptionItem[]
        - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
        - `label` string, required
        - `visibleConditions` VisibleCondition[]
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
          - `operand` string, required: The value that the visible condition evaluates against.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
      - `actions` DescriptionItem[]
        - `operator` 'AND' | 'OR': The `operator` is to specify the `AND/OR` logical operator which is used to combine multiple conditions specified in the `visibleConditions`. The `AND` operator requires all conditions to be true in order to evaluate as true. On the other hand, the `OR` operator evaluates as true if either condition is true.
        - `label` string, required
        - `visibleConditions` VisibleCondition[]
          - `value` string, required: Notation which indicates the value of an attribute
          - `valueType` string: The data type of the `value`. The data type is automatically assigned from the given capability definition.
          - `operator` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'EQUALS' | 'DOES_NOT_EQUAL' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'ONE_OF', required: The method to compare
          - `operand` string, required: The value that the visible condition evaluates against.
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
  - `dpInfo` object[]: Information used for obtaining details page plugins on different platforms. Array of Details page link objects.
    - `os` 'android' | 'ios' | 'tizen' | 'web', required: The OS of the UI Client used to show the details page. 'iOS': iOS SmartThings 'android': Android SmartThings
    - `dpUri` string, required: This is linked to obtain the vendor-specific device details page. The device's dashboard card opens the detail view using this link when the user clicks the device card.
    - `serverDpUri` string: This is linked to obtain the vendor-specific device details page. The device's dashboard card opens the hosted detail view using this link when the user clicks the device card.
    - `operatingMode` string: This describes operating mode after onboarding. `easySetup` will launch the plugin for setting up your device while `deviceControl` will launch the plugin for controlling the device directly after onboarding.
    - `arguments` object[]: Complex devices can have sub dashboard cards and can pass an argument to the detailView when user clicks each sub dashboard cards.
      - `key` string, required: To specify key of `group` used in `dashboard`
      - `value` string, required: To specify group as an argument while launching the detailView.
  - `dpInfos` object[]: Multiple dpInfos according to `stPluginApiVersion` property Both `dpInfo` and `dpInfos` can not be defined simultaneously.
    - `stPluginApiVersion` string: Minimum supported details page plugin's API version.
    - `dpInfo` object[], required: Information used for obtaining details page plugins on different platforms. Array of Details page link objects.
      - `os` 'android' | 'ios' | 'tizen' | 'web', required: The OS of the UI Client used to show the details page. 'iOS': iOS SmartThings 'android': Android SmartThings
      - `dpUri` string, required: This is linked to obtain the vendor-specific device details page. The device's dashboard card opens the detail view using this link when the user clicks the device card.
      - `serverDpUri` string: This is linked to obtain the vendor-specific device details page. The device's dashboard card opens the hosted detail view using this link when the user clicks the device card.
      - `operatingMode` string: This describes operating mode after onboarding. `easySetup` will launch the plugin for setting up your device while `deviceControl` will launch the plugin for controlling the device directly after onboarding.
      - `arguments` object[]: Complex devices can have sub dashboard cards and can pass an argument to the detailView when user clicks each sub dashboard cards.
        - `key` string, required: To specify key of `group` used in `dashboard`
        - `value` string, required: To specify group as an argument while launching the detailView.
  - `language` LanguageItem[]
    - `locale` string, required
    - `poCodes` PoCodes[], required: The list of resources that contain translated text
      - `label` string, required
      - `po` string, required: Po code. Should begin with '___PO_CODE'
  - `presentationSettings` PresentationSettingsForDevicePresentation: Defines presentation-level settings that are independent of the three UI views (`dashboard, detailView, automation`) and can be shared across multiple features. This object is used to describe how a capability’s values should be interpreted or transformed when rendered, rather than how the UI components themselves are structured.
    - `temperatureConversions` TemperatureConversionsItemForDevicePresentation[]: Defines which capability fields are subject to temperature conversion based on a user preference. This property is used to explicitly mark the value/unit pairs that must be converted to match the user’s preferred temperature unit (`Celsius / Fahrenheit`), regardless of the raw device status.
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `value` string, required: Notation which indicates the value of an attribute
      - `unit` string: Unit value. Can be either a device state reference in the format `{attribute}.unit` (e.g., `level.unit`) or a literal unit value (e.g., `%`, `dB`).

## Other responses

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

## Changes

- **2022-12-19** `adcacfc2749d`: 2 info
  - the security scope `r:devices` was added to the endpoint's security scheme `Bearer`
  - the security scope `r:devices:*` was added to the endpoint's security scheme `Bearer`

[Operation history](https://skmtc.dev/smartthings/apis/smartthings-api/changes/presentation/get.md)

---

[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)
