Syntax recap
Dimension follows the JSONPath convention. The root prefix
$ is optional in most fields — items and $.items are equivalent.
Data Path — pointing at the records array
The Data Path is the JSONPath to the array of records inside the response. Composer infers it on the first successful run but you can override.Example responses + their Data Paths
$ (root)
items (or $.items)
data.users.edges[*].node
This last form is common in GraphQL responses.
ID Path — the unique key per record
The ID Path is the JSONPath to a unique identifier on each record. Used for deduplication across syncs and as the join key for Detail Requests. Given records from Response 1 / 2 above:id
Given records like:
user.id (or user.email if email is more stable)
Given records with composite keys:
<device>::<scan_date> and uses it as the ID Path.
Capture Variables — pulling values for Detail Requests
The Capture Variables section exposes JSONPath-extracted values for use in the Detail Request URL / body / params.Example — slug-based detail endpoint
Primary endpoint returns:slug not id:
Detail Request URL becomes:
Example — captured context
Primary endpoint returns a list with parent context:
Detail Request URL:
Pagination JSONPaths
When Pagination is set to Next Page Link or Cursor, Composer asks for the JSONPath to the cursor/next URL inside the response.Next Page Link — Response with next_url
meta.pagination.next_url
When the field returns null or is missing, Dimension stops pagination automatically.
Next Page Link — Link header (GitHub style)
GitHub puts the next URL in theLink HTTP response header, not the body:
Cursor — Slack style
Page Number & Size — Index based
For an API that takes?page=N&size=100:
Composer asks for the response’s record count field if you have one (e.g.
total: 4521) to avoid an extra empty-response call.
Limit/Offset
For?limit=100&offset=200:
Worked examples — real API shapes
GitHub — repos endpoint
Slack — conversations.list
Microsoft Graph — users
@odata.nextLink key — JSONPath escapes the @ automatically.
Jira — search
Elasticsearch — _search
Debugging tips
- The Test panel shows the response — use it before fiddling with JSONPaths. Inspect the raw payload to confirm structure.
- Composer is good at JSONPath — paste a sample response into the chat and say “the records live under this path; configure it”.
- Inherit auth from parent when the Detail Request is on the same API — avoids re-entering credentials.
- Empty Data Path on a single-object response — when the response itself is the record (e.g.
GET /me), set Data Path to$and Composer treats the whole response as one record.
See also
Data Feeds overview
The full editor with Trigger / Data Request / Detail Request
Data Sources
HTTP methods and auth patterns
Schema & Fields
How Composer infers and refines the schema
Sync & Freshness
Schedules and troubleshooting