Pagination and Filtering
Preserve opaque cursors and follow each generated query schema
Each generated operation defines its own pagination shape. VRPlatform uses both page/limit responses and opaque cursors depending on the resource.
Opaque Cursors
Two endpoints currently use opaque cursors: GET /audit/timeline and
GET /teams/issues.
Pass nextCursor back unchanged as cursor. Do not decode it, generate your
own, compare it lexically, or reuse it after changing filters. A null cursor or
hasMore=false ends traversal.
Page And Offset
Where declared, send the operation's page, limit, or offset fields and
render its returned totals. Do not add paging fields to an operation that does
not declare them.
Filters
- Query parameters are strict.
- Comma-separated arrays, repeated form values, booleans, dates, and ranges follow the generated OpenAPI serialization metadata.
- Keep filter state with its cursor or page state.
- Reset pagination after a filter, sort, view, or team change.
- Treat IDs as team-scoped even when their format is globally unique.
For a concrete cursor workflow, see Portfolio health.
