GET /api/history/temperature/samples/?page=1&pageSize=2&direct=desc
Отримує сторінку синхронізованих вибірок історії для всіх чотирьох каналів.
Авторизація: Bearer.
Параметри запиту
Section titled “Параметри запиту”| Параметр | Тип | Обов’язковий | Типове значення | Опис |
|---|---|---|---|---|
page | число | ні* | — | Номер сторінки, починаючи з 1. Використовується лише в першому запиті серії. Ігнорується, якщо вказано cursor. |
pageSize | число | так | — | Кількість вибірок на сторінці. Допустимий діапазон: 1..20. |
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": 1234, "periodSec": 5, "lastSequence": 1236, "samples": [ { "sequence": 1236, "channels": [ { "state": "normal", "temperature": 72.5 }, { "state": "normal", "temperature": 72.7 }, { "state": "invalid", "temperature": null }, { "state": "normal", "temperature": 68.2 } ] }, { "sequence": 1235, "channels": [ { "state": "normal", "temperature": 72.4 }, { "state": "normal", "temperature": 72.6 }, { "state": "invalid", "temperature": null }, { "state": "normal", "temperature": 68.1 } ] } ], "sampleCount": 2}Поля відповіді
Section titled “Поля відповіді”| Поле | Тип | Опис |
|---|---|---|
nextCursor | число|null | Курсор для наступного запиту. null, якщо досягнуто кінця запиту. |
periodSec | число | Інтервал записування історії в секундах. |
lastSequence | число | Поточний монотонний порядковий номер на момент запиту. |
samples | масив | Вибірки в порядку direct (елементів: 0..pageSize). |
sampleCount | число | Кількість вибірок у поточному наборі результатів. |
Якщо доступних даних більше немає, відповідь містить sampleCount: 0, samples: []
і nextCursor: null. Це не є помилкою.
samples[]
Section titled “samples[]”| Поле | Тип | Опис |
|---|---|---|
sequence | число | Порядковий номер цієї вибірки. |
channels | масив | 4 елементи (CH1..CH4). |
samples[].channels[]
Section titled “samples[].channels[]”| Поле | Тип | Опис |
|---|---|---|
state | рядок | "normal", "open", "short", "invalid" |
temperature | число|null | Температура (null, якщо значення некоректне) |
Сценарій: заповнення вікна інтерфейсу на 60 вибірок (3 запити по 20)
Section titled “Сценарій: заповнення вікна інтерфейсу на 60 вибірок (3 запити по 20)”GET /api/history/temperature/samples/?page=1&pageSize=20&direct=desc→ { "nextCursor": 1216, "sampleCount": 20, "samples": [...] }
GET /api/history/temperature/samples/?cursor=1216&pageSize=20&direct=desc→ { "nextCursor": 1196, "sampleCount": 20, "samples": [...] }
GET /api/history/temperature/samples/?cursor=1196&pageSize=20&direct=desc→ { "nextCursor": null, "sampleCount": 20, "samples": [...] }У першому запиті використовується page=1; у наступних — cursor із попередньої відповіді.