Products
GET
/products
List products
Scopes
- products:read
Parameters
- cursor
- limit
- qFull-text search on names and titles.
Responses
-
200OK
ProductPageFields (2)- dataRequired
- next_cursorRequiredPass as cursor for the next page; null on the last page.
- 401Missing, revoked, or expired API key.
- 403The key lacks the scope.
- 429Rate limited: 60 requests per minute per key.
POST
/products
Create
Scopes
- products:write
Parameters
- Idempotency-KeyRequiredStored 24 h per company and key. Same key with a different body returns 422.
Request body
ProductInput
Fields (6)
- nameRequired
- brand_name
- product_code
- description
- supplier_id
- external_idYour system's id, unique per company.
Responses
-
201Created
ProductFields (11)- id
- versionIncrements on every write. Send it back in If-Match.
- created_at
- updated_at
- deleted_at
- external_idYour system's id, unique per company.
- nameRequired
- brand_name
- product_code
- description
- supplier_id
- 400Validation failed.
- 409Version conflict, external_id taken, or a secret that cannot be replayed.
- 422Semantically invalid, or an Idempotency-Key reused with a different body.
- 401Missing, revoked, or expired API key.
- 403The key lacks the scope.
- 429Rate limited: 60 requests per minute per key.
GET
/products/{id}
Get
Scopes
- products:read
Parameters
- idRequired
Responses
-
200OK
ProductFields (11)- id
- versionIncrements on every write. Send it back in If-Match.
- created_at
- updated_at
- deleted_at
- external_idYour system's id, unique per company.
- nameRequired
- brand_name
- product_code
- description
- supplier_id
- 404Not found. Records of other companies are also reported as not found.
- 401Missing, revoked, or expired API key.
- 403The key lacks the scope.
- 429Rate limited: 60 requests per minute per key.
PATCH
/products/{id}
Update (partial)
Scopes
- products:write
Parameters
- idRequired
- Idempotency-Key
- If-MatchThe version you last read; 409 version_conflict when it changed.
Request body
ProductInput
Fields (6)
- nameRequired
- brand_name
- product_code
- description
- supplier_id
- external_idYour system's id, unique per company.
Responses
-
200OK
ProductFields (11)- id
- versionIncrements on every write. Send it back in If-Match.
- created_at
- updated_at
- deleted_at
- external_idYour system's id, unique per company.
- nameRequired
- brand_name
- product_code
- description
- supplier_id
- 400Validation failed.
- 404Not found. Records of other companies are also reported as not found.
- 409Version conflict, external_id taken, or a secret that cannot be replayed.
- 422Semantically invalid, or an Idempotency-Key reused with a different body.
- 401Missing, revoked, or expired API key.
- 403The key lacks the scope.
- 429Rate limited: 60 requests per minute per key.
DELETE
/products/{id}
Delete (soft; restorable for 30 days)
Scopes
- products:write
Parameters
- idRequired
- Idempotency-Key
Responses
- 204Deleted
- 404Not found. Records of other companies are also reported as not found.
- 401Missing, revoked, or expired API key.
- 403The key lacks the scope.
- 429Rate limited: 60 requests per minute per key.
POST
/products/{id}/restore
Restore within 30 days of deletion
Scopes
- products:write
Parameters
- idRequired
- Idempotency-Key
Responses
-
200OK
ProductFields (11)- id
- versionIncrements on every write. Send it back in If-Match.
- created_at
- updated_at
- deleted_at
- external_idYour system's id, unique per company.
- nameRequired
- brand_name
- product_code
- description
- supplier_id
- 404Not found. Records of other companies are also reported as not found.
- 401Missing, revoked, or expired API key.
- 403The key lacks the scope.
- 429Rate limited: 60 requests per minute per key.
PUT
/products/by_external_id/{external_id}
Create or replace by your external id
Scopes
- products:write
Parameters
- external_idRequired
- Idempotency-Key
- If-MatchThe version you last read; 409 version_conflict when it changed.
Request body
ProductInput
Fields (6)
- nameRequired
- brand_name
- product_code
- description
- supplier_id
- external_idYour system's id, unique per company.
Responses
-
200Updated
ProductFields (11)- id
- versionIncrements on every write. Send it back in If-Match.
- created_at
- updated_at
- deleted_at
- external_idYour system's id, unique per company.
- nameRequired
- brand_name
- product_code
- description
- supplier_id
-
201Created
ProductFields (11)- id
- versionIncrements on every write. Send it back in If-Match.
- created_at
- updated_at
- deleted_at
- external_idYour system's id, unique per company.
- nameRequired
- brand_name
- product_code
- description
- supplier_id
- 400Validation failed.
- 409Version conflict, external_id taken, or a secret that cannot be replayed.
- 422Semantically invalid, or an Idempotency-Key reused with a different body.
- 401Missing, revoked, or expired API key.
- 403The key lacks the scope.
- 429Rate limited: 60 requests per minute per key.