---
title: "Create a Device Profile"
method: POST
path: "/deviceprofiles"
tags: ["Profiles"]
---

# Create a Device Profile

`POST /deviceprofiles`

## Request

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

Create a Device Profile.

## Headers

- `Authorization` string, string, required
- `X-ST-Organization` string, ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$

## Request body

- CreateDeviceProfileRequest
  - `name` string, ^(?!\s)[-_!.~'() *0-9a-zA-Z\p{L}]{1,150}(?<!\s)$, required: A name for the device profile.
  - `components` DeviceComponentRequest[], required: A list of components for this profile. Exactly 1 component ID must be `main`.
    - `label` string: UTF-8 label for the component.
    - `id` string, ^[-_!.~'()*0-9a-zA-Z]{1,36}$, required
    - `capabilities` CapabilityReferenceRequest[], required: A list of `[ 1..100 ]` capabilities for this component.
      - `id` string, required
      - `version` integer
      - `optional` boolean: An optional capability is available to be enabled for a device, but will not be part of the device record at join time unless specified. In other words, if set to `true`, then devices using this profile can support the capability, but are not required to. If set to `false`, devices using profile must support the capability.
      - `config` CapabilityConfiguration
        - `values` CapabilityConfigurationValue[], required
          - `key` string, required: The path to the preference attribute that is being configured.
          - `range` number[]: The range of values supported by the capability attribute. The range must be a subset of the one defined on the capability. Either `range` OR `enabledValues` must be provided, not both.
          - `enabledValues` string[]: The list of enumerated values that are supported for the capability attribute. The list of supported value must be a subset of the one defined on the capability. Either `range` OR `enabledValues` must be provided, not both.
          - `step` number, double: The incremental step that increases or decreases for numeric values.
      - `restrictions` Restriction: A typed model which describes a restriction pertaining to a platform entity.
        - `tier` integer, required: The restriction level of an entity to limit actions it can take.
        - `historyRetentionTTLDays` integer: The number of days to retain the state before deletion.
        - `visibleWhenRestricted` boolean: Indicate whether or not the entity is visible when restricted.
    - `categories` DeviceCategory[], required
      - `name` string, required
      - `categoryType` 'manufacturer' | 'user', required
    - `restrictions` Restriction: A typed model which describes a restriction pertaining to a platform entity.
      - `tier` integer, required: The restriction level of an entity to limit actions it can take.
      - `historyRetentionTTLDays` integer: The number of days to retain the state before deletion.
      - `visibleWhenRestricted` boolean: Indicate whether or not the entity is visible when restricted.
    - `optional` boolean: An optional component is available to be enabled for a device, but will not be part of the device record at join time unless specified. In other words, if set to `true`, then devices using this profile can support the component, but are not required to. If set to `false`, devices using profile must support the component. Note that all components, whether optional or not, must have at least one required (i.e. not optional) capability.
  - `preferences` PreferenceRequest[]: A list of preferences for this profile, whether implicit or explicit.
    - `preferenceId` string: The ID of the preference. When explicit flag is true this field is required.
    - `name` string, required: An alphanumeric English language name for this preference. Will be appended to a namespace to generate the full preference id.
    - `title` string, required: A short description for this preference.
    - `description` string: A long description for this preference.
    - `explicit` boolean: A flag describing whether this preference is explicit, or inline. When set to true a preferenceId is required.
    - `required` boolean: A flag describing whether this property is required or not.
    - `preferenceType` 'integer' | 'number' | 'boolean' | 'string' | 'enumeration', required: The type of preference this is.
    - `definition` object, required: The definition of this preference.
      - `minimum` number, double: Minimum value a preference may be set to. Only valid for `integer` and `number` preference types.
      - `maximum` number, double: Maximum value a preference may be set to. Only valid for `integer` and `number` preference types.
      - `minLength` integer: Minimum length a string may be set to. Only valid for `string` preference type.
      - `maxLength` integer: Maximum length a string may be set to. Only valid for `string` preference type.
      - `default` unknown
      - `stringType` 'text' | 'password' | 'paragraph': The type of a string preference. `text` is a normal preference, `password` encrypts the values, and `paragraph` is for documentation purposes.
      - `options` object: The available selections for an `enumeration` preference.
  - `metadata` unknown
  - `deviceConfig` EmbeddedDeviceConfiguration
    - `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
    - `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.
    - `description` string: To provide the explanation of the device configuration/presentation’s purpose or content.
    - `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.
              - …
            - `state` object: To describe "on" and "off" state of a switch
              - …
          - `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.
              - …
            - `state` object: To describe "on" and "off" state of a switch
              - …
          - `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.
              - …
            - `state` object: To describe "on" and "off" state of a switch
              - …
          - `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.
              - …
            - `state` object, required
              - …
          - `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.
              - …
            - `state` object, required
              - …
          - `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.
              - …
        - `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
              - …
            - `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
              - …
          - `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
              - …
          - `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.
              - …
          - `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.
              - …
          - `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.
              - …
            - `capability` string, required
            - `version` integer: The version number of the capability.
            - `component` string, required
            - `formatInfo` 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.
              - …
            - `capability` string, required
            - `version` integer: The version number of the capability.
            - `component` string, required
            - `formatInfo` 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.
              - …
            - `inline` object: To specify the `item` which is a child of `panel` displayType in the `basicPlus`.
              - …
            - `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[]
              - …
            - `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` DeviceConfigEntry[]
      - `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.
    - `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[]
              - …
      - `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[]
              - …
      - `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

## Response `200`

The Device Profile.

- DeviceProfileResponse: Describes the migration status (from v1 -> v2). This profile will be available in a backwards compatible fashion regardless.
  - `id` string, required
  - `name` string, required
  - `metadata` unknown
  - `restrictions` DeviceRestriction: A typed model which describes a restriction pertaining to a platform entity.
    - `tier` integer, required: The restriction level of an entity to limit actions it can take.
    - `historyRetentionTTLDays` integer: The number of days to retain the state before deletion.
    - `visibleWhenRestricted` boolean: Indicate whether or not the entity is visible when restricted.
  - `presentationId` string
  - `migrationStatus` 'MIGRATED' | 'NOT_MIGRATED', required
  - `status` 'DEVELOPMENT' | 'PUBLISHED', required: The lifecycle status of a device profile. 'DEVELOPMENT' - Device profile can be modified. The profile is only available to the developer and can only be used with a self-published app. 'PUBLISHED' - Device profile can be shared with other users, but cannot be modified.
  - `preferences` PreferenceResponse[]
    - `preferenceId` string: The ID of the preference
    - `name` string: An alphanumeric English language name for this preference.
    - `title` string, required: A short description for this preference.
    - `description` string: A long description for this preference.
    - `required` boolean: A flag describing whether this property is required or not.
    - `explicit` boolean: A flag describing whether this preference is explicit, or inline.
    - `preferenceType` 'integer' | 'number' | 'boolean' | 'string' | 'enumeration', required: The type of preference this is.
  - `components` DeviceComponent[], required
    - `id` string, ^[-_!.~'()*0-9a-zA-Z]{1,36}$, required
    - `label` string: UTF-8 label for the component.
    - `capabilities` DeviceCapabilityReference[], required
      - `id` string, required
      - `version` integer
      - `optional` boolean: An optional capability is available to be enabled for a device, but will not be part of the device record at join time unless specified. In other words, if set to `true`, then devices using this profile can support the capability, but are not required to. If set to `false`, devices using profile must support the capability.
      - `config` CapabilityConfiguration
        - `values` CapabilityConfigurationValue[], required
          - `key` string, required: The path to the preference attribute that is being configured.
          - `range` number[]: The range of values supported by the capability attribute. The range must be a subset of the one defined on the capability. Either `range` OR `enabledValues` must be provided, not both.
          - `enabledValues` string[]: The list of enumerated values that are supported for the capability attribute. The list of supported value must be a subset of the one defined on the capability. Either `range` OR `enabledValues` must be provided, not both.
          - `step` number, double: The incremental step that increases or decreases for numeric values.
      - `restrictions` Restriction: A typed model which describes a restriction pertaining to a platform entity.
        - `tier` integer, required: The restriction level of an entity to limit actions it can take.
        - `historyRetentionTTLDays` integer: The number of days to retain the state before deletion.
        - `visibleWhenRestricted` boolean: Indicate whether or not the entity is visible when restricted.
      - `ephemeral` boolean
      - `status` CapabilityStatus: A map of attribute name to attribute state.
    - `categories` DeviceCategory[], required: Defines the categories for the device. There can be up to two: one defined by the manufacturer, the other a user-selected value.
      - `name` string, required
      - `categoryType` 'manufacturer' | 'user', required
    - `restrictions` Restriction: A typed model which describes a restriction pertaining to a platform entity.
      - `tier` integer, required: The restriction level of an entity to limit actions it can take.
      - `historyRetentionTTLDays` integer: The number of days to retain the state before deletion.
      - `visibleWhenRestricted` boolean: Indicate whether or not the entity is visible when restricted.
    - `optional` boolean: An optional component is available to be enabled for a device, but will not be part of the device record at join time unless specified. In other words, if set to `true`, then devices using this profile can support the component, but are not required to. If set to `false`, devices using profile must support the component. Note that all components, whether optional or not, must have at least one required (i.e. not optional) capability.

## Other responses

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

## Changes

- **2022-12-19** `adcacfc2749d`: 1 info
  - added the new optional `header` request parameter `X-ST-Organization`

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

---

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