Skip to content

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

Get a page of archived recorder entries.

Auth: Bearer.


ParameterTypeRequiredDefaultDescription
pagenumberno*—Page number, starting at 1. Used only in the first request in a series. Ignored if cursor is provided.
pageSizenumberyes—Number of records per page. Valid range: 1..8.
directstringno"desc"Sort direction: "asc" — oldest to newest; "desc" — newest to oldest.
cursornumberno*—Cursor for continuing the query. See below.

*Either page or cursor is required.

The cursor provides stable sequential pagination without duplicates or gaps.

  • First request in a series: the client sends page=1 and omits cursor. The server starts the query at lastSequence (desc) or oldestSequence (asc).
  • Response contains nextCursor, the position from which to continue.
  • Subsequent requests: the client sends the cursor from the previous response; page is ignored.
  • End of the query: nextCursor: null means that no more data is available.
  • New series (when navigating to another UI page): the client resets cursor and starts again with 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
}
]
}
]
}
FieldTypeDescription
nextCursornumber|nullCursor for the next request. null if the end of the query has been reached.
recordCountnumberNumber of records in the current result set (0..pageSize).
recordsarrayRecords in direct order.

If no more data is available, the response contains recordCount: 0, records: [], and nextCursor: null. This is not an error.

FieldTypeDescription
sequencenumberRecord sequence number
timestampstringISO 8601 UTC
channelsarray4 elements (CH1..CH4)
FieldTypeDescription
statestring"normal", "open", "short", "invalid"
temperaturenumber|nullTemperature (null if the state is not "normal")
enabledbooleanWhether the channel is enabled
tripbooleanTrip state
alarmbooleanAlarm state
fanbooleanFan state

Scenario: populate a 25-record UI page (5 requests of 5)

Section titled “Scenario: populate a 25-record UI page (5 requests of 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": [...] }

The first request uses page=1; subsequent requests use the cursor from the previous response.