Сеанс завантаження прошивки
Завантаження файлу .ota реалізовано як послідовний сеанс завантаження до розділу OTA.
GET /api/service/firmware/upload/status/
Section titled “GET /api/service/firmware/upload/status/”Отримує поточний стан сеансу завантаження та дійсність образу OTA.
Авторизація: Bearer (powerUser).
Відповідь 200
Section titled “Відповідь 200”{ "uploadInProgress": false, "imageValid": true, "receivedBytes": 524288, "totalBytes": 524288, "percent": 100, "lastError": 0, "lastInstallState": "ready", "meta": { "fwVersion": "1.0", "buildTimestamp": 1785412800, "deviceStr": "TR-100E (48)", "description": "Production firmware" }}| Поле | Тип | Опис |
|---|---|---|
uploadInProgress | логічний | Триває стирання, отримання або перевірка |
imageValid | логічний | Образ OTA повністю завантажено та перевірено |
receivedBytes | число | Кількість підтверджених байтів |
totalBytes | число | Очікуваний розмір образу |
percent | число | Перебіг у відсотках |
lastError | число | Код помилки (0 = немає) |
lastInstallState | рядок | Останній стан установлення: "idle", "ready", "running", "failed", "unknown" |
meta | об’єкт | Метадані перевіреного образу; наявні лише за умови imageValid: true |
meta.fwVersion | рядок | Версія прошивки з образу OTA, до 15 символів ASCII (наприклад, 1.0 або 1.2.3-rc4) |
meta.buildTimestamp | число | Часова позначка складання у форматі Unix |
meta.deviceStr | рядок | Мітка цільового апаратного забезпечення; для цього пристрою — TR-100E (48) |
meta.description | рядок | Опис образу |
POST /api/service/firmware/upload/begin/
Section titled “POST /api/service/firmware/upload/begin/”Відкриває сеанс завантаження, задає розмір образу та готує розділ OTA.
Авторизація: Bearer (powerUser).
{ "size": 524288}| Поле | Тип | Обов’язкове | Опис |
|---|---|---|---|
size | число | так | Ціле число: розмір образу OTA в байтах (> 0 і ≤ розміру розділу OTA) |
- Повторний виклик цієї кінцевої точки скидає незавершений сеанс.
- Якщо триває
erase/verify→503 ERROR_NOT_READY.
Відповідь 200
Section titled “Відповідь 200”{ "acceptedOffset": 0}POST /api/service/firmware/upload/chunk/?offset=0
Section titled “POST /api/service/firmware/upload/chunk/?offset=0”Записує фрагмент образу OTA.
Авторизація: Bearer (powerUser).
Content-Type: application/octet-stream- Параметр запиту
offset: зміщення фрагмента в повному образі. - Тіло: необроблені байти фрагмента (щонайбільше
1024байти).
| Параметр | Тип | Обов’язковий | Опис |
|---|---|---|---|
offset | число | так | Ціле число: невід’ємне зміщення в повному образі OTA |
offsetмає відповідати очікуваному зміщенню або вказувати на вже підтверджений фрагмент (ідемпотентна повторна спроба).- Пропуск →
400 ERROR_INVALID_VALUE. - Фрагмент > 1024 байтів →
400 ERROR_INVALID_VALUE.
Відповідь 200
Section titled “Відповідь 200”{ "acceptedOffset": 1024}POST /api/service/firmware/upload/finish/
Section titled “POST /api/service/firmware/upload/finish/”Завершує сеанс завантаження та розпочинає перевірку.
Авторизація: Bearer (powerUser).
{ "confirm": true}- Неповний образ або помилка перевірки →
400 ERROR_INVALID_VALUE.
Відповідь 200
Section titled “Відповідь 200”{ "uploadInProgress": false, "imageValid": true, "receivedBytes": 524288, "totalBytes": 524288, "percent": 100, "lastError": 0, "lastInstallState": "ready", "meta": { "fwVersion": "1.0", "buildTimestamp": 1785412800, "deviceStr": "TR-100E (48)", "description": "Production firmware" }}POST /api/service/firmware/upload/discard/
Section titled “POST /api/service/firmware/upload/discard/”Видаляє підготовлений образ OTA та скидає сеанс завантаження.
Авторизація: Bearer (powerUser).
{ "confirm": true}Порожнє або синтаксично некоректне тіло JSON → 400 ERROR_API_PARSING.
Відсутнє поле confirm, значення нелогічного типу або false → 400 ERROR_INVALID_ARGUMENT.
Відповідь 200
Section titled “Відповідь 200”Повертає повний стан у тому самому форматі, що й GET /api/service/firmware/upload/status/.