Получение функций устройств (get features)
Обновлено 25 ноября 2022
Приложение-агент на контроллере отправляет в умный дом Sber запрос на получение перечня функций, который поддерживает категория устройств.
Пример ситуации использования:
- При загрузке агент отрисовывает контрол — выпадающий список поддерживаемых функций для категории устройств. Чтобы наполнить список, агент отправляет запрос в умный дом Sber.
- Умный дом Sber возвращает список функций для категории.
- Приложение-агент отрисовывает выпадающий список с перечнем доступных функций.
Формат запроса
Запрос отправляется на эндпоинт информационного API — адрес этого эндпоинта приходит в сообщении с глобальной конфигурацией. Заголовки см. в разделе Заголовки запросов.
GET /v1/mqtt-gate/categories/<category>/features
Параметры запроса:
Поле | Тип | Обязательное? | Описание |
category | string | ✔︎ | Название категории устройств (см. Описание устройств) |
Формат ответа
Умный дом Sber отправляет ответ приложению-агенту. Заголовки см. в разделе Заголовки запросов.
Успешный ответ:
Поле | Тип | Обязательное? | Описание |
features | list<object> | ✔︎ | Список функций, которые поддерживает категория устройств (см. Описание функций устройств) |
name | string | ✔︎ | Название функции |
data_type | string | ✔︎ | Тип, в котором функция возвращает данные |
required | bool | Является ли функция обязательной для категории |
{
"features": [
{
"name": string,
"data_type": string,
"required": boolean
},
// ...
]
}
При возникновении ошибки возвращается объект типа common error:
{
"code": integer,
"message": string,
"details": list<string>
}
Пример запроса и ответа
Приложение-агент запрашивает список функция для категории light. Умный дом Sber возвращает список функций.
Запрос:
curl -i -X GET /v1/mqtt-gate/categories/light/features HTTP/1.1 \
-H Host: example.com \
-H Content-Type: application/json \
-H Authorization: Basic qwerty-1234-... \
-H X-Request-Id: abcd-0000-ifgh-...
Успешный ответ:
{
"features": [
{
"name": "light_brightness",
"data_type": "INTEGER"
},
{
"name": "light_colour",
"data_type": "COLOUR"
},
{
"name": "light_colour_temp",
"data_type": "INTEGER"
},
{
"name": "light_mode",
"data_type": "ENUM"
},
{
"name": "on_off",
"data_type": "BOOL",
"required": true
},
{
"name": "online",
"data_type": "BOOL",
"required": true
}
]
}
Ответ с ошибкой:
{
"code": 500,
"message": "Internal server error",
"details": []
}