Обновление моделей устройств (put models)

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

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

  1. Вендор изменил характеристики какой-либо модели устройства. Например, на всех устройствах теперь установлена новая версия прошивки.
  2. Вендор уведомляет умный дом Sber об изменении модели устройства.
  3. Умный дом Sber обновляет сведения о модели в своей базе данных.

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

Вендор отправляет уведомление на эндпоинт умного дома Sber: https://partners.iot.sberdevices.ru/. Заголовки см. в разделе Заголовки запросов.

PUT /v1/models

Тело запроса:

Поле Тип Обязательное? Описание
models list<object> ✔︎ Список моделей устройств (см. Модель устройства (model))
{
    "models": [
        {
            "id": string,
            "manufacturer": string,
            "model": string,
            "hw_version": string,
            "sw_version": string,
            "description": string,
            "category": string,
            "features": [
                "online": string,
                "on_off": string
                // ... 
            ],
            "dependencies": {
                "func_name": {
                    "key": "string",
                    "values": [
                        {
                            "type": string,
                            "type_value": object
                        },
                        {
                            // ...
                        },
                    ]
                },
                {
                    // ...
                }
            }
        },
        {
            // ...
        }
    ]
}

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

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

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

HTTP/1.1 200 OK

При возникновении ошибки умный дом может возвращать:

  • Список errors, содержащий объекты error. Каждый объект указывает на конкретные модели, обновить которые не удалось.
  • Общую ошибку common error. Описывает проблему в целом и отправляется, только если проблему не удалось соотнести с конкретными моделями.

Если вендор уведомил о нескольких моделях, и часть из них умный дом смог обновить, а при обновлении остальных произошла ошибка, умный дом отправит ответ с ошибкой — в нем будет список необновленных моделей.

Ошибка конкретного устройства:

{
    "errors": [
        {
            "id": string,
            "code": integer,
            "message": string
        }
    ]
}

Общая ошибка:

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

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

Вендор уведомляет умный дом об обновлении модели умной розетки.

Запрос:

curl -i -X PUT /v1/models HTTP/1.1 \
-H Host: example.com \
-H Content-Type: application/json \
-H Authorization: Bearer qwerty-1234-... \
-H X-Request-Id: abcd-0000-ifgh-...
{
    "models": [
        {
            "id": "QWERTY123",
            "manufacturer": "Factory",
            "model": "SM0123456789",
            "hw_version": "3.2",
            "sw_version": "5.7",
            "description": "About device",
            "category": "socket",
            "features": [
                "online",
                "on_off"
            ]
        }
    ]
}

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

HTTP/1.1 200 OK

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

{
    "errors": [
        {
            "id": "QWERTY123",
            "code": 500,
            "message": "System error"
        }
    ]
}

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

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