---
title: "List all Device Profiles for a User"
method: GET
path: "/deviceprofiles"
tags: ["Profiles"]
---

# List all Device Profiles for a User

`GET /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: `r:deviceprofiles`
- TypeScript: <https://skmtc.dev/smartthings/apis/smartthings-api/docs/deviceprofiles/get.ts> (a function with typed inputs; its response is checked against the schema)

List all Device Profiles in an authenticated user's account.

## Query parameters

- `profileId` string[]

## 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}))$

## Response `200`

A list of the user's Device Profiles.

- PagedDeviceProfiles
  - `items` DeviceProfileResponse[]
    - `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.
  - `_links` Links
    - `next` Link
      - `href` string: An absolute URL linking to a resource.
    - `previous` Link
      - `href` string: An absolute URL linking to a resource.

## 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/get.md)

---

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