GET /api/recorder/records/?page=1&pageSize=2&direct=desc
Pobiera stronę zarchiwizowanych wpisów rejestratora.
Uwierzytelnianie: Bearer.
Parametry zapytania
Dział zatytułowany „Parametry zapytania”| Parametr | Typ | Wymagane | Domyślnie | Opis |
|---|---|---|---|---|
page | liczba | nie* | — | Numer strony, począwszy od 1. Używany tylko w pierwszym żądaniu serii. Ignorowany, jeśli podano cursor. |
pageSize | liczba | tak | — | Liczba rekordów na stronę. Prawidłowy zakres: 1..8. |
direct | ciąg znaków | nie | "desc" | Kierunek sortowania: "asc" — od najstarszych do najnowszych; "desc" — od najnowszych do najstarszych. |
cursor | liczba | nie* | — | 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=1i pomijacursor. Serwer rozpoczyna zapytanie odlastSequence(desc) albooldestSequence(asc). - Odpowiedź zawiera
nextCursor, czyli pozycję, od której należy kontynuować. - Kolejne żądania: klient wysyła
cursorz poprzedniej odpowiedzi; parametrpagejest ignorowany. - Koniec zapytania:
nextCursor: nulloznacza, że nie ma więcej dostępnych danych. - Nowa seria (podczas przechodzenia do innej strony interfejsu): klient resetuje
cursori ponownie rozpoczyna odpage=1.
Odpowiedź 200
Dział zatytułowany „Odpowiedź 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 } ] } ]}Pola odpowiedzi
Dział zatytułowany „Pola odpowiedzi”| Pole | Typ | Opis |
|---|---|---|
nextCursor | liczba|null | Kursor dla następnego żądania. null, jeśli osiągnięto koniec zapytania. |
recordCount | liczba | Liczba rekordów w bieżącym zestawie wyników (0..pageSize). |
records | tablica | Rekordy 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.
records[]
Dział zatytułowany „records[]”| Pole | Typ | Opis |
|---|---|---|
sequence | liczba | Numer sekwencyjny rekordu |
timestamp | ciąg znaków | ISO 8601 UTC |
channels | tablica | 4 elementy (CH1..CH4) |
records[].channels[]
Dział zatytułowany „records[].channels[]”| Pole | Typ | Opis |
|---|---|---|
state | ciąg znaków | "normal", "open", "short", "invalid" |
temperature | liczba|null | Temperatura (null, jeśli stan jest inny niż "normal") |
enabled | wartość logiczna | Określa, czy kanał jest włączony |
trip | wartość logiczna | Stan wyłączenia awaryjnego |
alarm | wartość logiczna | Stan alarmu |
fan | wartość logiczna | Stan 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.