Запрос всех устройств пользователя и их функций (get devices)

Умный дом Sber запрашивает у вендора список всех устройств, привязанных к аккаунту пользователя.

Пример ситуации использования:

  1. Пользователь в приложении вендора привязывает к своему аккаунту новое устройство.
  2. Умный дом Sber периодически запрашивает у вендора список всех устройств пользователя.
  3. Вендор возвращает список. В нем есть новое устройство.
  4. Умный дом обновляет список устройств пользователя. В приложении Салют, на SberBox, SberPortal и других устройствах с ассистентами Салют новое устройство отображается и доступно для управления.

Формат запроса

Умный дом отправляет запрос на эндпоинт вендора. Заголовки см. в разделе Заголовки запросов.

GET /v1/devices

Формат ответа

Вендор отправляет ответ на эндпоинт умного дома. Заголовки см. в разделе Заголовки запросов.

Успешный ответ:

Поле Тип Обязательное? Описание
devices list<objects> ✔︎ Список устройств (см. Устройство пользователя (device))
{
    "devices": [
        {
            "id": string,
            "name": string,
            "default_name": string,
            // ...
        },
        {
            "id": string,
            "name": string,
            "default_name": string,
            // ...
        }
    ]
}

При возникновении ошибки нужно возвращать объект типа common error:

{
    "code": integer,
    "message": string,
    "details": list<string>
}

Пример запроса и ответа

Умный дом запрашивает у вендора список устройств пользователя. Вендор возвращает список из двух устройств: лампы и розетки.

Запрос:

curl -i -X GET /v1/devices \
-H Host: example.com \
-H Content-Type: application/json \
-H Authorization: Bearer qwerty-1234-... \
-H X-Request-Id: abcd-0000-ifgh-...

Успешный ответ:

{
    "devices": [
        {
            "id": "ABCD_003",
            "name": "Кухонная розетка",
            "default_name": "Умная розетка"
        },
        {
            "id": "ABCD_005",
            "name": "Ночник",
            "default_name": "Умная лампа"
        },
    ]
}

Ответ с ошибкой:

{
    "code": 400,
    "message": "Invalid argument",
    "details": []
}

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней