GraphQL cursor expiration returns GRAPHQL_PARSE_FAILED with "Invalid cursor" after 15-minute inactivity
0 reputation · 06 Feb 2024, 01:19 UTC
0 reputation · 06 Feb 2024, 01:19 UTC
Jira Align's GraphQL API uses Relay-style cursor pagination with a maximum first value of 100. Cursors are opaque base64-encoded strings that embed offset and sort information. Integration guides and support tickets indicate cursors expire after approximately 15 minutes of inactivity, though this timeout is not published in the public API reference and may change without notice.
When a client resumes pagination using a cursor that has exceeded the undocumented TTL, the API responds with a GRAPHQL_PARSE_FAILED error containing the message "Invalid cursor". This error is indistinguishable from a malformed cursor supplied by the client, making it difficult to implement automatic retry logic that differentiates between a programming error and a legitimate session timeout.
cursorExpiresAt field or similar metadata is exposed in the connection payload.orderBy is required for stable pagination; changing sort order invalidates existing cursors immediately.What is the exact cursor TTL enforced by the GraphQL gateway, and is it configurable per tenant? Does the API provide any mechanism to refresh or extend a cursor without re-fetching the first page? Can clients reliably distinguish an expired cursor from a malformed one using error codes or extensions?
A thoughtful contribution can make all the difference. Be the first to share one.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.