Информация об устройствах пользователя

Запрашивает информацию о поддерживаемых устройствах пользователя.

Платформа умного дома отправит провайдеру текущий запрос при выполнении условий:

  • Аккаунты на Яндексе и на стороне провайдера связаны.
  • Пользователь зашел в приложение Дом с Алисой → plusCreated with Sketch. → Устройство умного дома и напротив названия производителя нажал кнопку Обновить.

Примечание

После связки аккаунтов на Яндексе и на стороне провайдера также отправляется данный запрос.

В ответ на такой запрос провайдеру необходимо вернуть список всех поддерживаемых устройств пользователя с описанием доступных умений и свойств. Максимальное количество устройств пользователя — 301.

Если часть устройств недоступна и провайдер не смог отправить информацию о них, платформа умного дома оставит эти устройства пользователя без изменений. Удалить устройство из списка может только сам пользователь.

Формат запроса платформы умного дома

Платформа умного дома отправляет запрос на Endpoint URL провайдера (https://example.com).

GET https://example.com/v1.0/user/devices

Заголовки запроса

Заголовок

Описание

Обязательный

Authorization

Авторизационный токен пользователя.

Да

X-Request-Id

Идентификатор запроса. Необходимо логировать на стороне провайдера для расследования инцидентов и проблем.

Да

Формат ответа провайдера

Провайдер должен ответить на полученный от платформы умного дома запрос согласно формату.

{
  "request_id": String,
  "payload": {
      "user_id": String,
      "devices": [
        {
          "id": String,
          "name": String,
          "status_info": {
            "reportable": Boolean
          },
          "description": String,
          "room": String,
          "type": String,
          "custom_data": Object,
          "capabilities": [
            "<capability1>": Object,
            "<capability2>": Object,
            ...
          ],
          "properties": [
            "<property1>": Object,
            "<property2>": Object,
            ...
          ],
          "device_info": {
            "manufacturer": String,
            "model": String,
            "hw_version": String,
            "sw_version": String
          }
        },
        ...
      ]
  }
}

Параметр

Тип

Описание

Обязательный

request_id

String

Идентификатор запроса.

Да

payload

Object

Объект с устройствами.

Да


Объект payload

Параметр

Тип

Описание

Обязательный

user_id

String

Идентификатор пользователя.

Да

devices

Array of objects

Массив с устройствами пользователя.

Да


Объект devices

Параметр

Тип

Описание

Обязательный

id

String

Идентификатор устройства. Должен быть уникален среди всех устройств производителя.

Да

name

String

Название устройства.

Да

status_info

Object

Информация о состоянии устройства.

Да

description

String

Описание устройства.

Нет

room

String

Название помещения, в котором расположено устройство.

Нет

type

String

Тип устройства. Со списком типов устройств можно ознакомиться в разделе Типы устройств.

Да

custom_data

Object

Объект, который состоит из набора пар "ключ":"значение" любой вложенности и представляет собой дополнительную информацию об устройстве. Содержимое объекта не должно превышать 1024 байт. Платформа умного дома сохранит этот объект и будет отправлять его в запросах
Информация о состояниях устройств пользователя, Изменение состояния у устройств.

Нет

capabilities

Array of objects

Массив с информацией об умениях устройства.

Да, если отсутствует properties

properties

Array of objects

Массив с информацией о свойствах устройства.

Да, если отсутствует capabilities

device_info

Object

Дополнительная техническая информация об устройстве. Чтобы посмотреть эту информацию, на главном экране приложения Дом с Алисой выберите устройство, в правом верхнем углу нажмите и выберите Об устройстве. Данная информация поможет быстрее идентифицировать устройство при обращении пользователя в поддержку Яндекса или к производителю.

Да, для официальных навыков


Объект status_info

Параметр

Тип

Описание

Обязательный

reportable

Boolean

Параметр показывает, умеет ли устройство передавать свой статус status («в сети» или «не в сети»).

Допустимые значения:

  • true — устройство обязано отправлять уведомления online/offline через /callback/state. В приложении Дом с Алисой для устройства включается бейдж «Не в сети» и пуш-уведомления о потере связи.

    У устройства в приложении появляется настройка Уведомления о состоянии → Не в сети → Уведомить о состоянии устройства «не в сети».

  • false — допустим только если устройство физически не поддерживает отслеживание доступности. Нереализованность на стороне провайдера («не успели», «планируем позже», «в облаке это дорого») основанием не является.

Внимание

reportable: true при фактически не отправляемых уведомлениях online/offline — основание для отклонения навыка на модерации.

Подробнее о требованиях к отправке уведомлений см. в разделе Требования к уведомлениям.

Да


Объект capabilities

Параметр

Тип

Описание

Обязательный

<capability1>

Object

Описание умения. Подробнее со списком доступных умений и их параметрами можно ознакомиться в разделе Об умениях.

Нет

<capability1>

Object

Описание умения. Подробнее со списком доступных умений и их параметрами можно ознакомиться в разделе Об умениях.

Нет


Объект properties

Параметр

Тип

Описание

Обязательный

<property1>

Object

Описание свойства. Подробнее со списком доступных свойств и их параметрами можно ознакомиться в разделе О свойствах.

Нет

<property2>

Object

Описание свойства. Подробнее со списком доступных свойств и их параметрами можно ознакомиться в разделе О свойствах.

Нет


Объект device_info

Параметр

Тип

Описание

Обязательный

manufacturer

String

Название производителя устройства. Может содержать до 256 символов. Параметр является обязательным для описания официального навыка (подробнее в разделе Обзор).

Да, для официальных навыков

model

String

Название модели устройства. Может содержать до 256 символов.Параметр является обязательным для описания официального навыка (подробнее в разделе Обзор).

Да, для официальных навыков

hw_version

String

Версия аппаратной составляющей устройства. Может содержать до 256 символов.

Нет

sw_version

String

Версия программного обеспечения устройства. Может содержать до 256 символов.

Нет

HTTP/1.1 404 Not Found

Глобальные коды

Поля retrievable и reportableв описании умений и свойств

В описании каждого умения и каждого свойства передаются два необязательных поля. Они определяют, как платформа умного дома узнает актуальное состояние: по запросу, уведомлением или обоими способами.

В объекте capabilities

Поле

Тип

Описание

Обязательность

retrievable

Boolean

Указывает, может ли платформа запросить текущее состояние умения через запрос Информация о состояниях устройств пользователя.

  • true (по умолчанию) — состояние умения доступно для запроса. Платформа отправляет query и ожидает актуальное значение в ответе.
  • false — состояние умения недоступно для запроса. Платформа не запрашивает состояние этого умения, а полагается только на уведомление /callback/state.

Если поле не указано, по умолчанию используется true.

Нет

reportable

Boolean

Указывает, должно ли изменение состояния этого умения доставляться через сервис уведомлений (уведомление /callback/state).

  • true — изменение состояния умения доставляется уведомлением /callback/state, в том числе если оно произошло без команды со стороны Яндекса: физической кнопкой, пультом, из приложения провайдера, локальным сценарием провайдера.
  • false (по умолчанию) — изменение состояния умения не требуется отправлять уведомлением. Платформа получает актуальное состояние через запрос query, который отправляется по действию пользователя.

Если поле не указано, по умолчанию используется false.

Если у умения одновременно retrievable: false и reportable: false, платформа не получает актуальное состояние ни одним из способов.

Нет


В объекте properties

Поле

Тип

Описание

Обязательность

retrievable

Boolean

Указывает, может ли платформа запросить текущее значение свойства через запрос Информация о состояниях устройств пользователя.

  • true (по умолчанию) — значение свойства доступно для запроса. Платформа отправляет query и ожидает актуальное значение в ответе.
  • false — значение свойства недоступно для запроса. Платформа не запрашивает значение этого свойства, а полагается только на уведомление /callback/state. Значение допустимо, только если у свойства reportable: true.

Если поле не указано, по умолчанию используется true.

Нет

reportable

Boolean

Указывает, должно ли изменение значения этого свойства доставляться через сервис уведомлений (уведомление /callback/state).

  • true — новое значение свойства доставляется уведомлением /callback/state при срабатывании датчика и при изменении его показаний.
  • false (по умолчанию) — изменение значения свойства не требуется отправлять уведомлением. Платформа получает актуальное значение через запрос query, который отправляется по действию пользователя.

Если поле не указано, по умолчанию используется false.

Нет

Важно

С 1 декабря 2026 года изменение каждого умения и каждого свойства, у которых указано reportable: true, должно доставляться в платформу умного дома запросом Уведомление об изменении состояния устройства — POST /api/v1/skills/{skill_id}/callback/state.

Событие отправляется по факту его наступления, без ожидания запроса со стороны Яндекса. Ответы на запросы Информация о состояниях устройств пользователя и Изменение состояния у устройств уведомление не заменяют.

Исчерпывающий перечень событий, при которых нужно отправлять уведомление, см. в разделе Требования к уведомлениям.

Поля retrievable и reportable описывают отдельное умение или отдельное свойство. Не путайте их с полем status_info.reportable, которое относится к устройству целиком и отвечает за передачу статуса доступности online и offline. Подробнее см. в разделе Информация об устройствах пользователя.

Пример

В примере описаны свойства светильника с регулировкой цвета.

curl -i -X GET 'https://example.com/v1.0/user/devices' \
-H 'Authorization: Bearer 123qwe456a...' \
-H 'X-Request-Id: ff36a3cc-ec...'
HTTP/1.1 200 OK

{
    "request_id": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
        "user_id": "Misha-01-super-545",
        "devices": [{
                "id": "abc-123",
                "name": "лампa",
                "status_info": {
                  "reportable": true
                },
                "description": "цветная лампа",
                "room": "спальня",
                "type": "devices.types.light",
                "custom_data": {
                  "foo": 1,
                  "bar": "two",
                  "baz": false,
                  "qux": [1, "two", false],
                  "quux": {
                    "quuz": {
                      "corge": []
                    }
                  }
                },
                "capabilities": [{
                        "type": "devices.capabilities.range",
                        "retrievable": true,
                        "parameters": {
                            "instance": "brightness",
                            "unit": "unit.percent",
                            "range": {
                                "min": 0,
                                "max": 100,
                                "precision": 10
                            }
                        }
                    },
                    {
                        "type": "devices.capabilities.on_off"
                    },
                    {
                        "type": "devices.capabilities.color_setting",
                        "parameters": {
                            "color_model": "hsv",
                            "temperature_k": {
                                "min": 2700,
                                "max": 9000,
                                "precision": 1
                            }
                        }
                    }
                ],
                "device_info": {
                    "manufacturer": "Provider2",
                    "model": "hue g11",
                    "hw_version": "1.2",
                    "sw_version": "5.4"
                }
            }

        ]
    }
}
HTTP/1.1 401 Unauthorized

Список пар "ключ": значение, разделенных запятой. Выделяется фигурными скобками {}.

{
  "name": "John",
  "surname": "Smith"
}

Cтрока, выделяется кавычками, например "Hello world".

Массив элементов, разделенных запятой. Элементом могут быть стандартные элементы JSON: строка, число, true, false, объект или массив. Массив выделяется квадратными скобками []:

"cities": ["Moscow", "Tokyo", "New York"]

Логическое значение без кавычек: true (истина) или false (ложь).