The Ownright Developer Platform uses the GraphQL “Connection” pattern for pagination — a powerful and flexible way to request data in chunks while maintaining full control over ordering and navigation. If you’re used to page and per_page style pagination, this might feel different at first, but it offers more precision and consistency — especially in real-time environments where data can change frequently.Documentation Index
Fetch the complete documentation index at: https://dev.ownright.com/llms.txt
Use this file to discover all available pages before exploring further.
🔄 What are GraphQL connections?
Connections are a GraphQL pattern for handling lists of objects (like referrals or matters) in a standardized way. Instead of simple arrays, connections return a structured object with: A list of edges, each containing:- A node (the item you care about)
- A cursor (a pointer used for pagination)
- If there’s a
hasNextPageorhasPreviousPage - What the
startCursorandendCursorare for the current page
📦 Example paginated query
Let’s say you want to fetch a list of items, 10 at a time:hasNextPage is true,
you can request the next page using the endCursor:
🧠 Common use cases
Here are a few common ways to use connections:- List all records using a query with
first: Nand pagination - Build an activity feed by scrolling through updates
- Export historical data one page at a time for internal reporting
- Sync new records incrementally by storing the last cursor you’ve seen
📚 Learn more about GraphQL connections
If you’re new to GraphQL pagination, here are some great resources:- GraphQL Cursor Connections Specification – the original spec
- Apollo Pagination Docs – practical client-side usage
- Hasura Pagination Primer – friendly intro with visual examples
💡 Tips for implementation
- Always check
pageInfo.hasNextPagebefore paginating - Don’t assume cursors are sequential strings — treat them as opaque tokens
- Use cursors to resume pagination if a sync job is interrupted
- Avoid using GraphQL offset or skip patterns — they’re not supported in our APIs