Skip to content

GET /api/log/events/?page=1&pageSize=1&direct=desc

Get a page of log events using stable pagination.

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 events per page. Valid range: 1..8.
directstringno"desc"Sort direction: "asc" — oldest to newest; "desc" — newest to oldest.
severityMasknumbernoall (31)Severity bit mask: bit0=DEBUG, bit1=INFO, bit2=WARNING, bit3=ERROR, bit4=FAULT.
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": 249,
"eventCount": 1,
"events": [
{
"sequence": 250,
"timestamp": "2026-04-16T12:00:00Z",
"errorCode": 0,
"pending": true,
"severity": "WARNING",
"dataType": "GENERIC",
"generic": {
"message": "Channel 1 open circuit"
}
}
]
}
FieldTypeDescription
nextCursornumber|nullCursor for the next request. null if the end of the query has been reached.
eventCountnumberNumber of events in the current result set (0..pageSize).
eventsarrayEvents in direct order.

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

FieldTypeRequiredDescription
sequencenumberyesEvent sequence number
timestampstringyesISO 8601 UTC
errorCodenumberyesError code
pendingbooleanyestrue if the event has not yet been acknowledged in the current power session
severitystringyes"DEBUG", "INFO", "WARNING", "ERROR", "FAULT"
dataTypestringyes"GENERIC", "FAULT", "NETWORK"
genericobjectnoPresent if dataType = "GENERIC"
faultobjectnoPresent if dataType = "FAULT"
networkobjectnoPresent if dataType = "NETWORK"
FieldTypeDescription
messagestringEvent text
FieldTypeDescription
taskNamestringTask name
registersstringA single string in the form PC=... LR=... SP=... CFSR=... HFSR=... MMFAR=... BFAR=... R0=... R1=... R2=... R3=... R12=... xPSR=...
FieldTypeDescription
messagestringText
remoteIpstringRemote IP address
remotePortnumberRemote port
localPortnumberLocal port
lwipErrornumberlwIP error code

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

Section titled “Scenario: populate a 25-event UI page (5 requests of 5)”
GET /api/log/events/?page=1&pageSize=5&direct=desc&severityMask=31
→ { "nextCursor": 245, "eventCount": 5, "events": [...] }
GET /api/log/events/?cursor=245&pageSize=5&direct=desc&severityMask=31
→ { "nextCursor": 240, "eventCount": 5, "events": [...] }
GET /api/log/events/?cursor=240&pageSize=5&direct=desc&severityMask=31
→ { "nextCursor": 235, "eventCount": 5, "events": [...] }
GET /api/log/events/?cursor=235&pageSize=5&direct=desc&severityMask=31
→ { "nextCursor": 230, "eventCount": 5, "events": [...] }
GET /api/log/events/?cursor=230&pageSize=5&direct=desc&severityMask=31
→ { "nextCursor": null, "eventCount": 5, "events": [...] }

The first request uses page=1; subsequent requests use the cursor from the previous response. The cursor prevents the server from rescanning records that have already been read, which is especially important when filtering by severityMask.