Skip to content

API Профили

Этот раздел описывает API для управления профилями настроек.


Получение списка профилей

Возвращает список всех сохраненных профилей с их метаданными.

Эндпоинт: GET /rest/profiles Метод: GET Аутентификация: Требуется

Пример запроса (curl)

curl -X GET http://DEVICE_IP/rest/profiles \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN"

Ответы

  • 200 OK: Успешный ответ со списком профилей.
    [
      {"id": "0", "name": "Default Profile", "createdAt": "2024-01-01T12:00:00Z", "isApplied": true},
      {"id": "1", "name": "Profile 1", "createdAt": "2024-01-02T10:30:00Z", "isApplied": false}
    ]
    

Получение активного профиля

Возвращает ID активного в данный момент профиля.

Эндпоинт: GET /rest/profiles/active Метод: GET Аутентификация: Требуется

Пример запроса (curl)

curl -X GET http://DEVICE_IP/rest/profiles/active \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN"

Ответы

  • 200 OK:
    {"id": "0"}
    
  • 404 Not Found: Активный профиль не найден.
    {"error": "No active profile found"}
    

Получение содержимого профиля

Возвращает полное содержимое (все настройки) указанного профиля.

Эндпоинт: GET /rest/profiles/content Метод: GET Аутентификация: Требуется

Параметры запроса (Query)

  • id (string, required): Идентификатор профиля.

Пример запроса (curl)

curl -X GET "http://DEVICE_IP/rest/profiles/content?id=0" \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN"

Ответы

  • 200 OK:
    {
      "id": "0",
      "name": "Default Profile",
      "createdAt": "2024-01-01T12:00:00Z",
      "ssvc": {
        "setting_key_1": "value"
      }
    }
    
  • 400 Bad Request: Отсутствует параметр id.
    {"error": "Missing 'id' parameter in request"}
    
  • 404 Not Found: Профиль не найден или не удалось получить содержимое.
    {"error": "Profile content not found or failed to retrieve"}
    

Создание нового профиля

Создает новый профиль из текущих настроек системы. ID профиля генерируется автоматически.

Эндпоинт: POST /rest/profiles Метод: POST Аутентификация: Требуется

Тело запроса

{
  "name": "Имя нового профиля"
}

Пример запроса (curl)

curl -X POST http://DEVICE_IP/rest/profiles \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"name": "Мой новый профиль"}'

Ответы

  • 201 Created: Профиль успешно создан.
    {"success": true, "id": "1"}
    
  • 400 Bad Request: Неверный JSON или отсутствует поле name.
    {"error": "Missing or invalid 'name' field"}
    
  • 500 Internal Server Error: Не удалось сохранить профиль.
    {"error": "Failed to save profile"}
    

Обновление или удаление содержимого профиля

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

Эндпоинт: POST /rest/profiles/content Метод: POST Аутентификация: Требуется

Тело запроса

{
  "id": "идентификатор_профиля",
  "content": {
    "ключ_для_обновления": "новое_значение",
    "ключ_для_удаления": null
  }
}
* Для обновления или добавления ключа, передайте его с новым значением. * Для удаления ключа, передайте его со значением null.

Пример запроса (обновление и удаление)

curl -X POST http://DEVICE_IP/rest/profiles/content \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"id": "1", "content": {"ssvc": {"power": 95}, "old_module": null}}'

Ответы

  • 200 OK: Содержимое профиля успешно обновлено.
    {"success": "Profile content updated"}
    
  • 400 Bad Request: Неверный JSON или отсутствуют поля id или content.
    {"error": "Missing or invalid 'content' field"}
    
  • 404 Not Found: Профиль не найден или не удалось обновить.
    {"error": "Profile not found or failed to update content"}
    

Удаление профиля

Удаляет указанный профиль.

Эндпоинт: DELETE /rest/profiles/delete Метод: DELETE Аутентификация: Требуется

Тело запроса

{
  "id": "идентификатор_профиля"
}

Пример запроса (curl)

curl -X DELETE http://DEVICE_IP/rest/profiles/delete \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"id": "1"}'

Ответы

  • 200 OK: Профиль успешно удален.
    {"success": "Profile deleted"}
    
  • 400 Bad Request: Неверный JSON или отсутствует поле id.
    {"error": "Missing or invalid 'id' field in request body"}
    
  • 404 Not Found: Профиль не найден или не удалось удалить.
    {"error": "Profile not found or failed to delete"}
    

Копирование профиля

Создает копию существующего профиля с новым ID.

Эндпоинт: POST /rest/profiles/copy Метод: POST Аутентификация: Требуется

Тело запроса

{
  "sourceId": "идентификатор_исходного_профиля",
  "newName": "Имя копии профиля"
}

Пример запроса (curl)

curl -X POST http://DEVICE_IP/rest/profiles/copy \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"sourceId": "0", "newName": "Копия дефолтного"}'

Ответы

  • 201 Created: Копия успешно создана.
    {"success": true, "id": "2"}
    
  • 400 Bad Request: Неверный JSON или отсутствуют поля sourceId или newName.
    {"error": "Missing or invalid 'sourceId' field in request body"}
    
  • 409 Conflict: Не удалось скопировать профиль (например, исходный профиль не найден).
    {"error": "Failed to copy profile. source not found "}
    

Обновление имени профиля

Обновляет метаданные профиля, а именно его имя.

Эндпоинт: PUT /rest/profiles/meta Метод: PUT Аутентификация: Требуется

Тело запроса

{
  "id": "идентификатор_профиля",
  "name": "Новое имя профиля"
}

Пример запроса (curl)

curl -X PUT http://DEVICE_IP/rest/profiles/meta \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"id": "2", "name": "Переименованная копия"}'

Ответы

  • 200 OK: Метаданные успешно обновлены.
    {"success": "Profile updated"}
    
  • 400 Bad Request: Неверный JSON или отсутствуют поля id или name.
    {"error": "Missing or invalid 'id' field in request body"}
    
  • 404 Not Found: Профиль не найден или не удалось обновить.
    {"error": "Profile not found or failed to update"}
    

Установка активного профиля и его применение

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

Эндпоинт: POST /rest/profiles/set-active Метод: POST Аутентификация: Требуется

Тело запроса

{
  "id": "идентификатор_профиля"
}

Пример запроса (curl)

curl -X POST http://DEVICE_IP/rest/profiles/set-active \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"id": "2"}'

Ответы

  • 200 OK: Профиль успешно установлен как активный и применен.
    {"success": "Profile set as active and applied"}
    
  • 400 Bad Request: Неверный JSON или отсутствует поле id.
    {"error": "Missing or invalid 'id' field in request body"}
    
  • 404 Not Found: Профиль не найден или не удалось установить как активный.
    {"error": "Profile not found or failed to set as active"}
    
  • 500 Internal Server Error: Не удалось применить профиль.
    {"error": "Failed to set active and apply profile"}
    

Сохранение текущих настроек в профиль

Сохраняет текущие настройки системы в указанный профиль, перезаписывая его содержимое.

Эндпоинт: POST /rest/profiles/save Метод: POST Аутентификация: Требуется

Тело запроса

{
  "id": "идентификатор_профиля"
}

Пример запроса (curl)

curl -X POST http://DEVICE_IP/rest/profiles/save \
     -H "Authorization: Bearer YOUR_AUTH_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"id": "2"}'

Ответы

  • 200 OK: Текущие настройки успешно сохранены в профиль.
    {"success": true, "message": "Current settings saved to profile."}
    
  • 400 Bad Request: Неверный JSON или отсутствует поле id.
    {"error": "Missing or invalid 'id' field in request body"}
    
  • 404 Not Found: Профиль с указанным ID не найден или произошла ошибка при сохранении.
    {"success": false, "message": "Profile not found or failed to save current settings."}