GET /api/recorder/records/?page=1&pageSize=2&direct=desc
Отримує сторінку архівних записів реєстратора.
Авторизація: Bearer.
Параметри запиту
Section titled “Параметри запиту”| Параметр | Тип | Обов’язковий | Типове значення | Опис |
|---|---|---|---|---|
page | число | ні* | — | Номер сторінки, починаючи з 1. Використовується лише в першому запиті серії. Ігнорується, якщо вказано cursor. |
pageSize | число | так | — | Кількість записів на сторінці. Допустимий діапазон: 1..8. |
direct | рядок | ні | "desc" | Напрямок сортування: "asc" — від найстаріших до найновіших; "desc" — від найновіших до найстаріших. |
cursor | число | ні* | — | Курсор для продовження запиту. Див. нижче. |
*Потрібно вказати page або cursor.
cursor
Section titled “cursor”Курсор забезпечує стабільну послідовну пагінацію без дублікатів і пропусків.
- Перший запит серії: клієнт передає
page=1і не передаєcursor. Сервер починає запит ізlastSequence(desc) абоoldestSequence(asc). - Відповідь містить
nextCursor— позицію, з якої слід продовжити. - Наступні запити: клієнт передає
cursorіз попередньої відповіді;pageігнорується. - Кінець запиту:
nextCursor: nullозначає, що доступних даних більше немає. - Нова серія (у разі переходу на іншу сторінку інтерфейсу): клієнт скидає
cursorі знову починає зpage=1.
Відповідь 200
Section titled “Відповідь 200”{ "nextCursor": 1532, "recordCount": 2, "records": [ { "sequence": 1534, "timestamp": "2026-04-16T12:01:00Z", "channels": [ { "state": "normal", "temperature": 72.6, "enabled": true, "trip": false, "alarm": false, "fan": false }, { "state": "normal", "temperature": 68.3, "enabled": true, "trip": false, "alarm": false, "fan": false }, { "state": "normal", "temperature": 65.1, "enabled": true, "trip": false, "alarm": false, "fan": false }, { "state": "normal", "temperature": 63.8, "enabled": true, "trip": false, "alarm": false, "fan": false } ] }, { "sequence": 1533, "timestamp": "2026-04-16T12:00:00Z", "channels": [ { "state": "normal", "temperature": 72.4, "enabled": true, "trip": false, "alarm": false, "fan": false }, { "state": "normal", "temperature": 68.1, "enabled": true, "trip": false, "alarm": false, "fan": false }, { "state": "normal", "temperature": 64.9, "enabled": true, "trip": false, "alarm": false, "fan": false }, { "state": "normal", "temperature": 63.6, "enabled": true, "trip": false, "alarm": false, "fan": false } ] } ]}Поля відповіді
Section titled “Поля відповіді”| Поле | Тип | Опис |
|---|---|---|
nextCursor | число|null | Курсор для наступного запиту. null, якщо досягнуто кінця запиту. |
recordCount | число | Кількість записів у поточному наборі результатів (0..pageSize). |
records | масив | Записи в порядку direct. |
Якщо доступних даних більше немає, відповідь містить recordCount: 0, records: []
і nextCursor: null. Це не є помилкою.
records[]
Section titled “records[]”| Поле | Тип | Опис |
|---|---|---|
sequence | число | Порядковий номер запису |
timestamp | рядок | ISO 8601 UTC |
channels | масив | 4 елементи (CH1..CH4) |
records[].channels[]
Section titled “records[].channels[]”| Поле | Тип | Опис |
|---|---|---|
state | рядок | "normal", "open", "short", "invalid" |
temperature | число|null | Температура (null, якщо стан не "normal") |
enabled | логічний | Чи ввімкнено канал |
trip | логічний | Стан реле «Перегрів» |
alarm | логічний | Стан реле «Тривога» |
fan | логічний | Стан реле «Вентиляція» |
Сценарій: заповнення сторінки інтерфейсу на 25 записів (5 запитів по 5)
Section titled “Сценарій: заповнення сторінки інтерфейсу на 25 записів (5 запитів по 5)”GET /api/recorder/records/?page=1&pageSize=5&direct=desc→ { "nextCursor": 1529, "recordCount": 5, "records": [...] }
GET /api/recorder/records/?cursor=1529&pageSize=5&direct=desc→ { "nextCursor": 1524, "recordCount": 5, "records": [...] }
GET /api/recorder/records/?cursor=1524&pageSize=5&direct=desc→ { "nextCursor": 1519, "recordCount": 5, "records": [...] }
GET /api/recorder/records/?cursor=1519&pageSize=5&direct=desc→ { "nextCursor": 1514, "recordCount": 5, "records": [...] }
GET /api/recorder/records/?cursor=1514&pageSize=5&direct=desc→ { "nextCursor": null, "recordCount": 5, "records": [...] }У першому запиті використовується page=1; у наступних — cursor із попередньої відповіді.