Skip to content

feat: Standardize cursor-based pagination across all list operations#997

Merged
bokelley merged 5 commits into
mainfrom
bokelley/pagination-spec
Feb 10, 2026
Merged

feat: Standardize cursor-based pagination across all list operations#997
bokelley merged 5 commits into
mainfrom
bokelley/pagination-spec

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

  • Add shared pagination-request.json and pagination-response.json core schemas
  • Migrate list_creatives and tasks_list from offset-based (limit/offset) to cursor-based pagination
  • Move list_property_lists and get_property_list pagination params from top-level into nested pagination object
  • Add optional pagination to list_accounts and get_products
  • get_property_list uses inline pagination with higher limits (max 10,000) since property lists can contain tens of thousands of identifiers
  • Make query_summary.total_matching optional to avoid contradicting optional pagination.total_count
  • Update docs for all affected operations

All list operations now use a consistent cursor-based pattern:

  • Request: pagination.max_results + pagination.cursor
  • Response: pagination.has_more (required) + pagination.cursor + pagination.total_count (optional)

Closes #992

Test plan

  • npm run build:schemas passes (259 schemas validated)
  • npm test passes (274 tests, all green)
  • npm run typecheck passes
  • Pre-commit hooks pass (link checking, accessibility)
  • Review schema examples match new pagination pattern
  • Verify docs examples render correctly in Mintlify

🤖 Generated with Claude Code

bokelley and others added 5 commits February 9, 2026 21:52
Add shared pagination-request.json and pagination-response.json schemas.
Migrate list_creatives and tasks_list from offset-based to cursor-based.
Move property list pagination from top-level into nested pagination object.
Add optional pagination to list_accounts and get_products.

get_property_list uses inline pagination with higher limits (max 10,000)
since property lists can contain tens of thousands of identifiers.

Closes #992

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extend pagination standardization to all remaining operations:
- list_creative_formats (media-buy + creative): optional $ref pagination
- list_content_standards: optional $ref pagination
- get_media_buy_artifacts: migrate top-level limit/cursor to nested
  pagination with inline high-limit schema (max 10,000)
- get_signals: migrate top-level max_results to nested pagination $ref

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… not pagination

max_results on get_signals caps discovery results ("give me 5 matching
signals"), which is semantically different from pagination ("page through
all results"). Restore it as a top-level parameter.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
max_results is a search limiter (cap discovery results), pagination
enables cursor-based paging through those results. Both coexist.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5 operations have breaking pagination changes (field removal/rename),
5 operations have non-breaking additions only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bokelley bokelley merged commit 96a90ec into main Feb 10, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Standardize pagination across all list operations

1 participant