Search envelope
A page can be short, or empty, while
has_more is true. Stop only when has_more is false.
Changes feed envelope
Cursor rules
- A cursor is bound to the filters and sort of the request that produced it. Send the same filters and sort with the cursor; only
limit,includeandinclude_totalmay change. Otherwise: 400cursor-mismatch. - A cursor that is damaged, or signed with a retired key, gets 400
invalid-cursor. A cursor longer than 6,000 characters gets 400invalid-requestwith the codequery-too-long. - On the feed,
sinceis accepted only on a request withoutcursor. - Cursors are opaque. Do not parse or build them.
- There is no snapshot: records that change while you page can appear twice or be passed. Upsert by
id.
Page sizes
A
limit above the maximum is a 400, not a silent cap.
Totals
include_total=true on search adds total to the first page and repeats it on later pages:
"total": null means counting did not finish in time; the page is still complete.
Ordering
Search results followsort (default -application_date), with ties broken by jurisdiction and id. Records without a usable date for the sort field come last in both directions. The feed is ordered by publication time, then jurisdiction and id.