{"id":"pagination-conventions","title":"Pagination & Rate Limiting","description":"Conventions for paginating large collections and communicating rate limits.","standards":[{"id":"cursor-pagination","name":"Cursor-based Pagination","title":"Cursor-based (Server-driven) Pagination","description":"Server provides opaque cursor token for next page. More reliable for large datasets. Handles concurrent modifications well. Cannot jump to arbitrary pages.","usedFor":["Large collections","Real-time data","Concurrent access"],"parameters":["cursor","limit"],"responseFields":["nextCursor","prevCursor","nextLink"],"recommendation":"RECOMMENDED over offset-based"},{"id":"offset-pagination","name":"Offset-based Pagination","title":"Offset-based (Client-driven) Pagination","description":"Client specifies offset and limit. Allows jumping to arbitrary pages. May miss or duplicate items during concurrent modifications. Performance degrades with large offsets.","usedFor":["Simple lists","Admin interfaces","Known-size collections"],"parameters":["offset","limit","skip","top"],"responseFields":["totalCount","offset","limit"]},{"id":"rate-limit-headers","name":"Rate Limit Headers","title":"Rate Limiting Headers","description":"Headers for communicating rate limit status. Based on draft IETF standards. Helps clients manage request frequency.","usedFor":["Rate limiting","Quota management"],"headers":[{"name":"RateLimit-Limit","description":"Maximum requests allowed in window"},{"name":"RateLimit-Remaining","description":"Requests remaining in current window"},{"name":"RateLimit-Reset","description":"Unix timestamp when window resets"},{"name":"Retry-After","description":"Seconds to wait before retrying (RFC 9110)"}]}],"links":{"self":{"href":"/v1/standards/pagination-rate-limiting"},"parent":{"href":"/v1/standards"}}}