ProbeRun

Docs / Using ProbeRun

Large lists and paging

Every list the API returns (Projects, Scenarios, Runs, Policies, Violations, a project’s attached Policies, Calibration labels, Feedback) is capped — at most 500 rows per request, with a smaller default for a few endpoints (100 for Runs/Policies/Violations, 200 for Scenarios) that matches what the dashboard already fetches. A tenant below the cap sees no difference at all. Once a tenant crosses it, a caller building its own integration against the API (the dashboard and CLI stay under the caps today) asks for the next page with offset; a response that came back full carries an X-Next-Offset header naming where the next page starts, and a response that came back short of the cap is the last page. Rows come back in a stable order that never skips or repeats one across pages — newest-first for every list except a project’s attached Policies, which stays in the order they were attached (oldest attachment first), matching the Policies tab it feeds.

The Team page’s Members, Invitations and API keys lists page the same way, 500 rows at a time. Next appears whenever a page comes back full, because that is when the API sends X-Next-Offset; it cannot tell a full last page from one with more behind it, so a list of exactly 500 shows Next and an empty second page that reads “No more members.” (or invitations, or API keys). The Previous / Next buttons show at a section’s foot whenever you are past the first page or Next exists; a list shorter than 500 shows none. Each list keeps its own place in the URL (members_offset, invitations_offset, api_keys_offset), so paging one list leaves the others where they are and a page is a link you can share. The Team forms also check the API’s own length limits when you save (issuer URL 2048 characters, client ID 512, group claim 200, invitation email 320, API key name 200, at most 100 admission groups of at most 300 characters each): an over-long value is kept as you typed or pasted it, not cut short, and the form says which field is too long instead of sending a request the API would refuse.