Przejdź do głównej zawartości

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

Pobiera stronę zarchiwizowanych wpisów rejestratora.

Uwierzytelnianie: Bearer.


ParametrTypWymaganeDomyślnieOpis
pageliczbanie*—Numer strony, począwszy od 1. Używany tylko w pierwszym żądaniu serii. Ignorowany, jeśli podano cursor.
pageSizeliczbatak—Liczba rekordów na stronę. Prawidłowy zakres: 1..8.
directciąg znakównie"desc"Kierunek sortowania: "asc" — od najstarszych do najnowszych; "desc" — od najnowszych do najstarszych.
cursorliczbanie*—Kursor służący do kontynuowania zapytania. Zobacz poniżej.

*Wymagany jest parametr page albo cursor.

Kursor zapewnia stabilną, sekwencyjną paginację bez duplikatów ani luk.

  • Pierwsze żądanie w serii: klient wysyła page=1 i pomija cursor. Serwer rozpoczyna zapytanie od lastSequence (desc) albo oldestSequence (asc).
  • Odpowiedź zawiera nextCursor, czyli pozycję, od której należy kontynuować.
  • Kolejne żądania: klient wysyła cursor z poprzedniej odpowiedzi; parametr page jest ignorowany.
  • Koniec zapytania: nextCursor: null oznacza, że nie ma więcej dostępnych danych.
  • Nowa seria (podczas przechodzenia do innej strony interfejsu): klient resetuje cursor i ponownie rozpoczyna od 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
}
]
}
]
}
PoleTypOpis
nextCursorliczba|nullKursor dla następnego żądania. null, jeśli osiągnięto koniec zapytania.
recordCountliczbaLiczba rekordów w bieżącym zestawie wyników (0..pageSize).
recordstablicaRekordy w kolejności określonej przez direct.

Jeśli nie ma więcej dostępnych danych, odpowiedź zawiera recordCount: 0, records: [] oraz nextCursor: null. Nie jest to błąd.

PoleTypOpis
sequenceliczbaNumer sekwencyjny rekordu
timestampciąg znakówISO 8601 UTC
channelstablica4 elementy (CH1..CH4)
PoleTypOpis
stateciąg znaków"normal", "open", "short", "invalid"
temperatureliczba|nullTemperatura (null, jeśli stan jest inny niż "normal")
enabledwartość logicznaOkreśla, czy kanał jest włączony
tripwartość logicznaStan wyłączenia awaryjnego
alarmwartość logicznaStan alarmu
fanwartość logicznaStan wentylatora

Scenariusz: wypełnienie strony interfejsu 25 rekordami (5 żądań po 5)

Dział zatytułowany „Scenariusz: wypełnienie strony interfejsu 25 rekordami (5 żądań po 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": [...] }

Pierwsze żądanie używa page=1; kolejne używają parametru cursor z poprzedniej odpowiedzi.