---
title: "Create a Device Configuration"
method: POST
path: "/presentation/deviceconfig"
tags: ["Presentations"]
---

# Create a Device Configuration

`POST /presentation/deviceconfig`

## Request

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

Make an idempotent call to either create or get a device configuration based on the structure of the provided payload.

Note: This API functionality is in BETA

## Request body

- CreateDeviceConfigWithProfileIdRequest
  - `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.
  - `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` object
    - `states` DeviceConfigEntryForDashboardState[]
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `idx` integer: An index among the multiple items of dashboard provided in the capability presentation.
      - `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.
      - `values` CapabilityValueForDashboardState[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
        - `label` string
        - `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.
      - `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.
      - `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
      - `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.
    - `actions` DeviceConfigEntryForDashboardAction[]
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `idx` integer: An index among the multiple items of dashboard provided in the capability presentation.
      - `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.
      - `inline` object: To override the referenced capability presentation inline. It corresponds to the schema of the dashboard.actions item of capability presentation.
        - `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.
              - …
        - `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.
              - …
        - `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.
              - …
        - `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.
              - …
        - `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.
              - …
            - `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.
      - `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` BasicPlusItem[]
      - `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` PanelForDeviceConfig: To render the multiple items of UI components to display each action or state in the dashboard card.
        - `items` object[], required
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `idx` integer: An index among the multiple parts of compartment provided in the capability presentation.
          - `size` '1x1' | '2x1' | '3x1' | '4x1' | '1/3x1' | '1x2' | '2x2' | '4x2', required: To specify the size of UI component to display this item in panel. This should be selected one of the sizes among the `availableSizes` provided by the capability presentation. 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 will occupy in the panel.
          - `values` CapabilityValueForPanel[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
            - `enabledValues` string[]: A list of values supported among those defined in the capability alternatives. For instance, a device may not support `auto` for supported thermostat fan modes, so this field might be an array containing `on` and `off`.
            - `label` string
            - `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.
              - …
            - `range` number[]: 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.
            - `key` string: This can be either command name or attribute name. For pointing commands without arguments(enumCommands), specify `{{enumCommands}}` then this override values will apply to enumCommands. If it is omitted, then this override values will apply to entire definitions.
          - `inline` object: To specify the `item` which is a child of `panel` displayType in the `basicPlus`.
            - `label` string
            - `displayType` 'stepper' | 'list' | 'pushButton' | 'invokeButton' | 'state' | 'slider' | 'empty', 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 "stepper" here, you must also include the "stepper" key and its object definition for this action or state.
            - `stepper` StepperWithAvailableSize: 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.
              - …
            - `list` ListWithAvailableSize: To specify available values shown in a drop-down UI. User can select one of the value among the list items
              - …
            - `pushButton` PushButtonWithAvailableSize
              - …
            - `invokeButton` InvokeButtonWithAvailableSize: Defines a UI component that displays executable commands and allows users to invoke them.
              - …
            - `state` StateWithAvailableSize: This display type creates a state UI that shows state only.
              - …
            - `slider` SliderWithAvailableSize: To display slider display type, at least one of the command and value must be specified.
              - …
            - `empty` EmptyWithAvailableSize
              - …
          - `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` DeviceConfigEntryForDetailView[]
    - `component` string, required
    - `capability` string, required
    - `version` integer: The version number of the capability.
    - `values` CapabilityValue[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
      - `enabledValues` string[]: A list of values supported among those defined in the capability alternatives. For instance, a device may not support `auto` for supported thermostat fan modes, so this field might be an array containing `on` and `off`.
      - `label` string
      - `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.
      - `range` number[]: 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.
      - `key` string, required: This can be either command name or attribute name. For pointing commands without arguments(enumCommands), specify `{{enumCommands}}` then this override values will apply to enumCommands.
    - `patch` PatchItem[]: A format which is applied some operations(add / replace / remove) from the rfc6902(https://tools.ietf.org/html/rfc6902#section-4). Please note that array in the patch is sequentially processed.
      - `op` 'add' | 'replace' | 'remove', required: Operation objects MUST have exactly one "op" member, whose value indicates the operation to perform
      - `path` string, required: path specifies a string format for identifying a specific value within a JSON document. It is used by all operations in patch to specify the part of the document to operate on.
      - `value` object
    - `visibleCondition` object: 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` object
    - `conditions` ExcludedDeviceConditionConfigEntry[]
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `values` CapabilityValue[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
        - `enabledValues` string[]: A list of values supported among those defined in the capability alternatives. For instance, a device may not support `auto` for supported thermostat fan modes, so this field might be an array containing `on` and `off`.
        - `label` string
        - `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.
        - `range` number[]: 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.
        - `key` string, required: This can be either command name or attribute name. For pointing commands without arguments(enumCommands), specify `{{enumCommands}}` then this override values will apply to enumCommands.
      - `patch` PatchItem[]: A format which is applied some operations(add / replace / remove) from the rfc6902(https://tools.ietf.org/html/rfc6902#section-4). Please note that array in the patch is sequentially processed.
        - `op` 'add' | 'replace' | 'remove', required: Operation objects MUST have exactly one "op" member, whose value indicates the operation to perform
        - `path` string, required: path specifies a string format for identifying a specific value within a JSON document. It is used by all operations in patch to specify the part of the document to operate on.
        - `value` object
      - `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` ExcludedConditionItemId[]: To exclude specified automation in `exclude` when this item is selected by the user.
        - `id` integer: The index of the array in the given capability to which this exclusion object will be inserted
        - `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
    - `actions` ExcludedDeviceActionConfigEntry[]
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `values` CapabilityValue[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
        - `enabledValues` string[]: A list of values supported among those defined in the capability alternatives. For instance, a device may not support `auto` for supported thermostat fan modes, so this field might be an array containing `on` and `off`.
        - `label` string
        - `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.
        - `range` number[]: 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.
        - `key` string, required: This can be either command name or attribute name. For pointing commands without arguments(enumCommands), specify `{{enumCommands}}` then this override values will apply to enumCommands.
      - `patch` PatchItem[]: A format which is applied some operations(add / replace / remove) from the rfc6902(https://tools.ietf.org/html/rfc6902#section-4). Please note that array in the patch is sequentially processed.
        - `op` 'add' | 'replace' | 'remove', required: Operation objects MUST have exactly one "op" member, whose value indicates the operation to perform
        - `path` string, required: path specifies a string format for identifying a specific value within a JSON document. It is used by all operations in patch to specify the part of the document to operate on.
        - `value` object
      - `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` ExcludedActionItemId[]: To exclude specified automation in `exclude` when this item is selected by the user.
        - `id` integer: The index of the array in the given capability to which this exclusion object will be inserted
        - `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
  - `type` 'dth' | 'profile'
  - `deviceProfileId` string, uuid: An optional device profile Id. If present the profile Id will be used to generate a unique device configuration.

## Response `200`

Create a device configuration or get a match if it already exists.

- PublicDeviceConfiguration
  - `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 configuration.
  - `description` string: To provide the explanation of the device configuration/presentation’s purpose or content.
  - `type` 'dth' | 'profile'
  - `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.
  - `iconUrl` string: DEPRECATED: Please use iconUrl under icons property.
  - `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` object
    - `states` DeviceConfigEntryForDashboardState[]
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `idx` integer: An index among the multiple items of dashboard provided in the capability presentation.
      - `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.
      - `values` CapabilityValueForDashboardState[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
        - `label` string
        - `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.
      - `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.
      - `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
      - `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.
    - `actions` DeviceConfigEntryForDashboardAction[]
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `idx` integer: An index among the multiple items of dashboard provided in the capability presentation.
      - `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.
      - `inline` object: To override the referenced capability presentation inline. It corresponds to the schema of the dashboard.actions item of capability presentation.
        - `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.
              - …
        - `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.
              - …
        - `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.
              - …
        - `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.
              - …
        - `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.
              - …
            - `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.
      - `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` BasicPlusItem[]
      - `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` PanelForDeviceConfig: To render the multiple items of UI components to display each action or state in the dashboard card.
        - `items` object[], required
          - `component` string, required
          - `capability` string, required
          - `version` integer: The version number of the capability.
          - `idx` integer: An index among the multiple parts of compartment provided in the capability presentation.
          - `size` '1x1' | '2x1' | '3x1' | '4x1' | '1/3x1' | '1x2' | '2x2' | '4x2', required: To specify the size of UI component to display this item in panel. This should be selected one of the sizes among the `availableSizes` provided by the capability presentation. 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 will occupy in the panel.
          - `values` CapabilityValueForPanel[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
            - `enabledValues` string[]: A list of values supported among those defined in the capability alternatives. For instance, a device may not support `auto` for supported thermostat fan modes, so this field might be an array containing `on` and `off`.
            - `label` string
            - `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.
              - …
            - `range` number[]: 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.
            - `key` string: This can be either command name or attribute name. For pointing commands without arguments(enumCommands), specify `{{enumCommands}}` then this override values will apply to enumCommands. If it is omitted, then this override values will apply to entire definitions.
          - `inline` object: To specify the `item` which is a child of `panel` displayType in the `basicPlus`.
            - `label` string
            - `displayType` 'stepper' | 'list' | 'pushButton' | 'invokeButton' | 'state' | 'slider' | 'empty', 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 "stepper" here, you must also include the "stepper" key and its object definition for this action or state.
            - `stepper` StepperWithAvailableSize: 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.
              - …
            - `list` ListWithAvailableSize: To specify available values shown in a drop-down UI. User can select one of the value among the list items
              - …
            - `pushButton` PushButtonWithAvailableSize
              - …
            - `invokeButton` InvokeButtonWithAvailableSize: Defines a UI component that displays executable commands and allows users to invoke them.
              - …
            - `state` StateWithAvailableSize: This display type creates a state UI that shows state only.
              - …
            - `slider` SliderWithAvailableSize: To display slider display type, at least one of the command and value must be specified.
              - …
            - `empty` EmptyWithAvailableSize
              - …
          - `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` DeviceConfigEntryForDetailView[]
    - `component` string, required
    - `capability` string, required
    - `version` integer: The version number of the capability.
    - `values` CapabilityValue[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
      - `enabledValues` string[]: A list of values supported among those defined in the capability alternatives. For instance, a device may not support `auto` for supported thermostat fan modes, so this field might be an array containing `on` and `off`.
      - `label` string
      - `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.
      - `range` number[]: 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.
      - `key` string, required: This can be either command name or attribute name. For pointing commands without arguments(enumCommands), specify `{{enumCommands}}` then this override values will apply to enumCommands.
    - `patch` PatchItem[]: A format which is applied some operations(add / replace / remove) from the rfc6902(https://tools.ietf.org/html/rfc6902#section-4). Please note that array in the patch is sequentially processed.
      - `op` 'add' | 'replace' | 'remove', required: Operation objects MUST have exactly one "op" member, whose value indicates the operation to perform
      - `path` string, required: path specifies a string format for identifying a specific value within a JSON document. It is used by all operations in patch to specify the part of the document to operate on.
      - `value` object
    - `visibleCondition` object: 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` object
    - `conditions` ExcludedDeviceConditionConfigEntry[]
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `values` CapabilityValue[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
        - `enabledValues` string[]: A list of values supported among those defined in the capability alternatives. For instance, a device may not support `auto` for supported thermostat fan modes, so this field might be an array containing `on` and `off`.
        - `label` string
        - `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.
        - `range` number[]: 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.
        - `key` string, required: This can be either command name or attribute name. For pointing commands without arguments(enumCommands), specify `{{enumCommands}}` then this override values will apply to enumCommands.
      - `patch` PatchItem[]: A format which is applied some operations(add / replace / remove) from the rfc6902(https://tools.ietf.org/html/rfc6902#section-4). Please note that array in the patch is sequentially processed.
        - `op` 'add' | 'replace' | 'remove', required: Operation objects MUST have exactly one "op" member, whose value indicates the operation to perform
        - `path` string, required: path specifies a string format for identifying a specific value within a JSON document. It is used by all operations in patch to specify the part of the document to operate on.
        - `value` object
      - `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` ExcludedConditionItemId[]: To exclude specified automation in `exclude` when this item is selected by the user.
        - `id` integer: The index of the array in the given capability to which this exclusion object will be inserted
        - `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
    - `actions` ExcludedDeviceActionConfigEntry[]
      - `component` string, required
      - `capability` string, required
      - `version` integer: The version number of the capability.
      - `values` CapabilityValue[]: A list of valid values for the command argument or attribute that can override those defined by the alternatives provided in the capability presentation.
        - `enabledValues` string[]: A list of values supported among those defined in the capability alternatives. For instance, a device may not support `auto` for supported thermostat fan modes, so this field might be an array containing `on` and `off`.
        - `label` string
        - `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.
        - `range` number[]: 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.
        - `key` string, required: This can be either command name or attribute name. For pointing commands without arguments(enumCommands), specify `{{enumCommands}}` then this override values will apply to enumCommands.
      - `patch` PatchItem[]: A format which is applied some operations(add / replace / remove) from the rfc6902(https://tools.ietf.org/html/rfc6902#section-4). Please note that array in the patch is sequentially processed.
        - `op` 'add' | 'replace' | 'remove', required: Operation objects MUST have exactly one "op" member, whose value indicates the operation to perform
        - `path` string, required: path specifies a string format for identifying a specific value within a JSON document. It is used by all operations in patch to specify the part of the document to operate on.
        - `value` object
      - `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` ExcludedActionItemId[]: To exclude specified automation in `exclude` when this item is selected by the user.
        - `id` integer: The index of the array in the given capability to which this exclusion object will be inserted
        - `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.
  - `presentationId` string: System generated identifier that corresponds to a device presentation (formerly `vid`)
  - `manufacturerName` string: Secondary namespacing key for grouping presentations (formerly `mnmn`)

## Other responses

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

---

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