Pagination
Most list endpoints in the API (GET /modules, GET /services,
GET /tools, GET /processes, GET /logs) return the same paginated
envelope:
Paging
- Pass the previous response’s
nextCursorback as thecursorquery parameter to fetch the next page. nextCursorisnullwhen there are no more items; stop paging then.limitis a positive integer, 1–100, defaulting to 20. Values above 100 are silently clamped to 100.- Items are ordered by a stable, unique sort key per endpoint (newest-first
for modules, services, processes, and logs;
(serviceId, id)ascending for tools). Cursors encode a position in that ordering, not the filters — restart from the first page (omitcursor) whenever the filters change.
Note: registry browse endpoints (GET /registries/:id/definitions,GET /registries/:id/modules) return{ definitions | modules, nextCursor }rather than the{ items, nextCursor, hasMore }envelope above, but use the samecursor/limitquery parameters (limitclamped to 100, default 20).
Errors
A malformed, re-encoded, or expired cursor returns400 with a stable error
code on the body:
On either error, drop the cursor and restart from the first page.