Pagination and sync
Cursor pages, and incremental sync with updated_since
Every list is newest first, a page at a time, with a cursor that says exactly where the next page starts.
Pages
limitsets the page size, 1 to 100. It defaults to 25. A biggerlimitis a 400, never a quietly shorter page.has_moresays whether another page follows.next_cursoris where it starts. Send it back asstarting_after. It isnullon the last page.
Why a cursor
A page number moves when a booking lands mid-read, so page 2 repeats or skips a row. A cursor names the last row you saw, so the next page starts right after it however the list grows. Treat it as opaque: one this API did not issue is a 400.
Incremental sync
Every list takes updated_since, an ISO 8601 instant. To keep a copy up to date:
- Note the time, then page through the whole list once.
- Next run, send
updated_sinceset to the time you noted, and page through what comes back. - Upsert each row by its
id, and note the new time.
A customer's tags and lists come on the customer, so a tag added to them shows up as a changed customer.
Filters
Each list takes the filters its reference page names, and nothing else: an unknown parameter is a 400, so a typo is never read as "everything". An id filter with a malformed id matches nothing.