Orders & Customers API
Read-only, list-only, PII scope-gated.
Both are read-only today — no write endpoints exist for orders or
customers, and neither has a GET /:id route (list-only, same as
Products).
Orders
GET /platform/v1/orders — scope read_orders, cursor-paginated.
const { orders, nextCursor } = await client.listOrders(cursor, 50);{
"orders": [
{ "id": "...", "orderNumber": 1042, "currency": "INR", "totalAmount": 1499, "payment": { "status": "paid" }, "fulfillmentStatus": "unfulfilled", "createdAt": "..." }
],
"nextCursor": null
}Customers
GET /platform/v1/customers — scope read_customers, cursor-paginated.
const { customers, nextCursor, piiIncluded } = await client.listCustomers(cursor, 50);A broad scope does not automatically grant personal data
read_customers alone returns aggregate/non-PII fields only:
hasAccount, totalOrders, totalSpentAmount, createdAt. Email,
phone, and name require the separately reviewed and disclosed
read_customer_pii scope on top. The response's piiIncluded field
tells you which set you actually got back — always check it, don't
assume.
// without read_customer_pii
{ "customers": [{ "id": "...", "hasAccount": true, "totalOrders": 3, "totalSpentAmount": 4200 }], "nextCursor": null, "piiIncluded": false }
// with read_customer_pii
{ "customers": [{ "id": "...", "hasAccount": true, "totalOrders": 3, "totalSpentAmount": 4200, "email": "...", "phone": "...", "name": "..." }], "nextCursor": null, "piiIncluded": true }Errors
Both endpoints share the same shape as every other Partner API v1 list route — see Errors, Pagination & Idempotency for pagination params and the standard error envelope. There's nothing write-specific to document here since neither endpoint accepts a body.