Перейти до вмісту

GET /api/recorder/records/?page=1&pageSize=2&direct=desc

Отримує сторінку архівних записів реєстратора.

Авторизація: Bearer.


ПараметрТипОбов’язковийТипове значенняОпис
pageчислоні*—Номер сторінки, починаючи з 1. Використовується лише в першому запиті серії. Ігнорується, якщо вказано cursor.
pageSizeчислотак—Кількість записів на сторінці. Допустимий діапазон: 1..8.
directрядокні"desc"Напрямок сортування: "asc" — від найстаріших до найновіших; "desc" — від найновіших до найстаріших.
cursorчислоні*—Курсор для продовження запиту. Див. нижче.

*Потрібно вказати page або cursor.

Курсор забезпечує стабільну послідовну пагінацію без дублікатів і пропусків.

  • Перший запит серії: клієнт передає page=1 і не передає cursor. Сервер починає запит із lastSequence (desc) або oldestSequence (asc).
  • Відповідь містить nextCursor — позицію, з якої слід продовжити.
  • Наступні запити: клієнт передає cursor із попередньої відповіді; page ігнорується.
  • Кінець запиту: nextCursor: null означає, що доступних даних більше немає.
  • Нова серія (у разі переходу на іншу сторінку інтерфейсу): клієнт скидає cursor і знову починає з page=1.

{
"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
}
]
}
]
}
ПолеТипОпис
nextCursorчисло|nullКурсор для наступного запиту. null, якщо досягнуто кінця запиту.
recordCountчислоКількість записів у поточному наборі результатів (0..pageSize).
recordsмасивЗаписи в порядку direct.

Якщо доступних даних більше немає, відповідь містить recordCount: 0, records: [] і nextCursor: null. Це не є помилкою.

ПолеТипОпис
sequenceчислоПорядковий номер запису
timestampрядокISO 8601 UTC
channelsмасив4 елементи (CH1..CH4)
ПолеТипОпис
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 із попередньої відповіді.