A valid request URL is required to generate request examples{
"items": [
{
"id": "prod-espresso-01",
"name": "Espresso Intenso 1kg",
"is_active": true,
"brand_id": "brand-solya",
"created_at": "2026-07-01T09:00:00.000Z",
"updated_at": "2026-07-20T14:30:00.000Z",
"deleted_at": null
},
{
"id": "prod-discontinued-07",
"name": "Old Blend 500g",
"is_active": false,
"brand_id": "brand-solya",
"created_at": "2025-01-10T08:00:00.000Z",
"updated_at": "2026-07-20T14:30:00.000Z",
"deleted_at": "2026-07-20T14:30:00.000Z"
}
],
"nextCursor": "eyJ0IjoiMjAyNi0wNy0yMFQxNDozMDowMC4wMDBaIiwiaWQiOiJwcm9kLWRpc2NvbnRpbnVlZC0wNyJ9",
"hasMore": true
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Export a resource's changed rows (incremental CDC feed)
Streams the rows of :resource whose updated_at is past the watermark, ordered by a STABLE (updated_at, id) keyset, for the data-platform’s change-data-capture pull into Databricks. Pass since (ISO 8601, exclusive) for the first pull / a coarse restart, then walk the feed with the opaque cursor from each response’s nextCursor while hasMore is true (the cursor supersedes since and makes a tie on updated_at dup-free). Rows are the table’s own columns as JSON and DELIBERATELY INCLUDE soft-deleted (tombstoned) rows — each carries deleted_at (null when live) so the consumer applies the deletion. Machine-only: authenticate with the data-platform service token in X-Internal-Token.
A valid request URL is required to generate request examples{
"items": [
{
"id": "prod-espresso-01",
"name": "Espresso Intenso 1kg",
"is_active": true,
"brand_id": "brand-solya",
"created_at": "2026-07-01T09:00:00.000Z",
"updated_at": "2026-07-20T14:30:00.000Z",
"deleted_at": null
},
{
"id": "prod-discontinued-07",
"name": "Old Blend 500g",
"is_active": false,
"brand_id": "brand-solya",
"created_at": "2025-01-10T08:00:00.000Z",
"updated_at": "2026-07-20T14:30:00.000Z",
"deleted_at": "2026-07-20T14:30:00.000Z"
}
],
"nextCursor": "eyJ0IjoiMjAyNi0wNy0yMFQxNDozMDowMC4wMDBaIiwiaWQiOiJwcm9kLWRpc2NvbnRpbnVlZC0wNyJ9",
"hasMore": true
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Authorizations
The data-platform SERVICE token (DATA_PLATFORM_API_TOKEN) in the X-Internal-Token header. Guards the machine-only incremental CDC export; not a user credential and never a POS session — reachable only server-to-server.
Path Parameters
The registry name of the resource (table) to stream. Known: products, skus, prices, brands, suppliers, taxonomyAxes, promotions, coupons, customers, inventoryStock, inventoryMovements, transactions, transactionItems, salesTickets, stores, regions. An unknown name is a 404.
1Query Parameters
ISO 8601 EXCLUSIVE lower bound on updated_at (updated_at > since). Use for the first pull or a coarse restart; omit for a full snapshot. Superseded by cursor.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Opaque page token from a prior response's nextCursor. Resumes STRICTLY after the last returned (updated_at, id), so a tie on updated_at never dups or skips. When present it supersedes since. A malformed cursor is a 400.
1Max rows to return (default 200, clamped to 500). Fetch further pages via nextCursor while hasMore is true.
1 <= x <= 9007199254740991Response
One page of changed rows (incl. tombstones) plus the next-page cursor.
One page of changed rows (incl. tombstones) plus the next-page cursor.

