HTTP API
HTTP API для взаємодії з пристроєм TR-100E. Усі шляхи запитів починаються з /api/. Підтримуються методи GET і POST.
Загальні принципи
Section titled “Загальні принципи”- API приймає та повертає JSON (
Content-Type: application/json), крім бінарних фрагментів OTA й відповідей експорту. - Фрагменти OTA передаються з
Content-Type: application/octet-stream. - Кінцеві точки експорту CSV повертають
Content-Type: text/csv. - Кінцеві точки експорту звичайного тексту повертають
Content-Type: text/plain. - Успішні відповіді мають статус
200 OK. - У разі помилки повертаються відповідний статус HTTP і JSON:
{ "error": "ERROR_CODE", "message": "Human readable text" }. - Підтримується постійне з’єднання HTTP (keep-alive).
- Максимальний розмір заголовка HTTP:
1380байтів. - Максимальний розмір тіла HTTP:
4096байтів. - Максимальний загальний розмір HTTP-запиту:
5476байтів.
Рівні доступу
Section titled “Рівні доступу”| Рівень | Опис |
|---|---|
🟩 guest | Неавтентифікований клієнт |
🟨 user | Звичайний користувач |
🟥 powerUser | Користувач із розширеними правами |
guestмає доступ лише доGET /api/auth/status/,GET /api/auth/salt/,GET /api/version/іPOST /api/auth/login/.userмає доступ до стандартних кінцевих точок, а також доservice/time/sync.powerUserмає повний доступ до всіх кінцевих точок.
Усі запити POST /api/debug/*, крім /api/debug/display/start/ і /api/debug/display/stop/, додатково потребують діагностичного режиму, який активується під час запуску одночасним натисканням кнопок «Вгору» та «Вниз». У звичайному режимі ці запити повертають 403 Forbidden. Це обмеження не застосовується до запитів GET /api/debug/*.
Авторизація
Section titled “Авторизація”- Отримати
salt—GET /api/auth/salt/. - Увійти —
POST /api/auth/login/, передавшиSHA256(username + password + salt). - Усі подальші запити мають містити заголовок
Authorization: Bearer <token>. - Вийти —
POST /api/auth/logout/.
Для Web-авторизації використовуються два незалежні паролі: один для рівня user, інший — для рівня powerUser. Отримання та зміну налаштувань доступу описано в settings-get.md і settings-set.md.
- Абсолютні позначки часу передаються лише в UTC+0 у форматі ISO 8601:
2026-04-16T12:34:56Z. - Інтервали та затримки задаються цілими числами в секундах або хвилинах.
Часткове оновлення налаштувань
Section titled “Часткове оновлення налаштувань”POST /api/settings/set/ використовує семантику злиття:
- зберігаються лише передані поля;
- відсутнє поле означає «не змінювати»;
- масиви замінюються повністю;
- невідомі ключі →
400 ERROR_INVALID_VALUE.
Запити GET
Section titled “Запити GET”| Шлях | Призначення | Доступ |
|---|---|---|
/api/version/ | Ідентифікація пристрою та версія прошивки | 🟩 guest |
/api/auth/status/ | Поточний рівень доступу для запиту | 🟩 guest |
/api/auth/salt/ | Отримання salt для хешування пароля | 🟩 guest |
/api/state/get/?... | Знімок поточного стану за групою (device, network, relays, leds, protection, recorder, channels, log, ntp, httpd, modbus, wireguard) | 🟨 user |
/api/settings/get/?... | Отримання налаштувань за групою | 🟨 user |
/api/reference/sensor-types/ | Список підтримуваних типів датчиків | 🟨 user |
/api/history/temperature/info/ | Метадані вікна оперативної історії | 🟨 user |
/api/history/temperature/samples/?... | Оперативна історія температури для всіх каналів | 🟨 user |
/api/recorder/info/ | Метадані реєстратора температури | 🟨 user |
/api/recorder/records/?... | Архівні записи реєстратора температури | 🟨 user |
/api/recorder/export.csv/ | Експорт даних реєстратора температури у форматі CSV | 🟨 user |
/api/log/info/ | Зведені відомості про журнал подій | 🟨 user |
/api/log/events/?... | Події журналу | 🟨 user |
/api/log/export.log/ | Експорт журналу в текстовому форматі | 🟨 user |
/api/debug/tasks/ | Знімок завдань RTOS | 🟥 powerUser |
/api/debug/heap/ | Стан купи FreeRTOS/lwIP | 🟥 powerUser |
/api/debug/system/ | Системна діагностика | 🟥 powerUser |
/api/debug/settings/ | Стан банків постійних налаштувань | 🟥 powerUser |
/api/debug/adc/ | Необроблені дані АЦП і вимірювань | 🟥 powerUser |
/api/debug/external-storage/ | Відомості про зовнішнє сховище | 🟥 powerUser |
/api/debug/external-storage/dump/ | Повний дамп зовнішнього сховища | 🟥 powerUser + діагностичний режим |
/api/debug/network/ | Діагностика мережевого стека | 🟥 powerUser |
/api/debug/lwip-stats/ | Лічильники lwIP (пули proto + memp) | 🟥 powerUser |
/api/debug/menu/ | Стан меню інтерфейсу користувача | 🟥 powerUser |
/api/debug/keyget/ | Стан фізичних кнопок | 🟥 powerUser |
/api/service/firmware/upload/status/ | Стан сеансу завантаження OTA | 🟥 powerUser |
/api/service/identity/get/ | Поточний стан ідентифікаційних даних і стан апаратного блокування | 🟥 powerUser |
/api/service/challenge/status/ | Стан перевірки фізичного доступу Overvis | WireGuard + 🟨 user |
/api/service/calibration/report/ | Останній збережений звіт про калібрування; апаратний ключ не потрібен | 🟥 powerUser |
/api/service/calibration/status/ | Стан і контроль активності поточного сеансу калібрування | 🟥 powerUser + апаратний ключ |
Запити POST
Section titled “Запити POST”| Шлях | Призначення | Доступ |
|---|---|---|
/api/auth/login/ | Автентифікація користувача | 🟩 guest |
/api/auth/logout/ | Завершення сеансу | 🟨 user |
/api/settings/set/ | Часткове оновлення налаштувань | 🟥 powerUser |
/api/log/acknowledge/ | Підтвердження перегляду подій | 🟨 user |
/api/recorder/clear/ | Очищення реєстратора температури | 🟥 powerUser |
/api/log/clear/ | Очищення журналу подій | 🟥 powerUser |
/api/service/settings/reset/ | Відновлення заводських налаштувань | 🟥 powerUser |
/api/service/reboot/ | Планування перезапуску | 🟥 powerUser |
/api/service/time/set/ | Установлення системного часу | 🟥 powerUser |
/api/service/time/sync/ | Примусова синхронізація SNTP | 🟨 user |
/api/service/identity/set/ | Оновлення та збереження ідентифікаційних полів | 🟥 powerUser |
/api/service/challenge/set/ | Установлення, заміна або скидання запиту підтвердження Overvis | WireGuard + 🟨 user |
/api/service/calibration/begin/ | Початок сеансу калібрування | 🟥 powerUser + апаратний ключ |
/api/service/calibration/range/ | Вибір діапазону й точки | 🟥 powerUser + апаратний ключ |
/api/service/calibration/capture/ | Зчитування чотирьох необроблених значень АЦП і початок перевірки | 🟥 powerUser + апаратний ключ |
/api/service/calibration/commit/ | Збереження точок і чотирьох знімків показників якості | 🟥 powerUser + апаратний ключ |
/api/service/calibration/finish/ | Завершення сеансу та звільнення вимірювального тракту | 🟥 powerUser + апаратний ключ |
/api/service/firmware/upload/begin/ | Початок завантаження образу OTA | 🟥 powerUser |
/api/service/firmware/upload/chunk/?offset= | Запис фрагмента образу OTA | 🟥 powerUser |
/api/service/firmware/upload/finish/ | Завершення завантаження та перевірки | 🟥 powerUser |
/api/service/firmware/upload/discard/ | Видалення завантаженого образу OTA та скидання сеансу завантаження | 🟥 powerUser |
/api/service/firmware/apply/ | Застосування оновлення OTA | 🟥 powerUser |
/api/debug/relay/start/ | Перевірка реле — початок | 🟥 powerUser |
/api/debug/relay/stop/ | Перевірка реле — завершення | 🟥 powerUser |
/api/debug/led/start/ | Перевірка світлодіодів — початок | 🟥 powerUser |
/api/debug/led/stop/ | Перевірка світлодіодів — завершення | 🟥 powerUser |
/api/debug/display/start/ | Перевірка дисплея — увімкнення примусового керування | 🟥 powerUser |
/api/debug/display/stop/ | Перевірка дисплея — вимкнення примусового керування | 🟥 powerUser |
/api/debug/keypress/ | Імітація натискання кнопки | 🟥 powerUser |
Помилки та коди стану
Section titled “Помилки та коди стану”| HTTP | error | Призначення |
|---|---|---|
400 | ERROR_INVALID_ARGUMENT, ERROR_INVALID_VALUE, ERROR_API_PARSING | Некоректний запит |
401 | ERROR_UNAUTHORIZED | Немає чинної авторизації |
403 | ERROR_NO_ACCESS, ERROR_WRITE_PROTECT | Недостатньо прав |
404 | ERROR_NOT_FOUND | Ресурс не знайдено |
408 | ERROR_TIMEOUT | Перевищено час очікування операції |
429 | ERROR_LOCKED | Блокування після невдалих спроб входу |
500 | ERROR, ERROR_IO | Внутрішня помилка |
503 | ERROR_NOT_READY | Підсистема не готова |
507 | ERROR_NO_MEMORY | Недостатньо пам’яті |
Документацію оновлено: 2026-07-30