Skip to main content

Pagination

List endpoints return one page at a time:

{
"status": "success",
"message": "OK",
"data": {
"items": [],
"next_cursor": "<OPAQUE_CURSOR>"
}
}

Parameters​

ParameterDefaultRules
limit201 to 100. Other values answer 400 VALIDATION_FAILED.
cursor—The next_cursor of the previous page. Omit it for the first page.

Reading Every Page​

  1. Call the list without cursor.
  2. If the response has next_cursor, call the same list again with cursor=<next_cursor>, the same limit and the same filters.
  3. Stop when next_cursor is missing: that was the last page.

Changing limit or a filter while you page answers 400 INVALID_CURSOR. Start again from the first page instead. Treat the cursor as an opaque string: do not build or change it.

Stable and Shifting Lists​

  • GET /outlets, GET /users, GET /orders and GET /returns page by position in a fixed order, so records added while you page do not move rows between pages.
  • The other lists page by offset. A record added or removed while you page can move a row to the next page (you see it twice) or the previous page (you miss it).
  • GET /shifts is not paged: it returns every shift that is open now at the outlet.