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

GET /api/history/temperature/samples/?page=1&pageSize=2&direct=desc

Отримує сторінку синхронізованих вибірок історії для всіх чотирьох каналів.

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


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

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

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

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

{
"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
}
ПолеТипОпис
nextCursorчисло|nullКурсор для наступного запиту. null, якщо досягнуто кінця запиту.
periodSecчислоІнтервал записування історії в секундах.
lastSequenceчислоПоточний монотонний порядковий номер на момент запиту.
samplesмасивВибірки в порядку direct (елементів: 0..pageSize).
sampleCountчислоКількість вибірок у поточному наборі результатів.

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

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