APIAPI referenceCatalog Push API
Report Orders
Placed orders for attribution → outbox order.reported (attributed_orders.source = api_push); order
POST/v1/stores/{store_id}/orders:reportScope orders:report
- Scope:
orders:report(scopes and plan access) - Rate limit: 600 requests/min per API key (test keys: 60/min); 60/min per store (rate limits)
Placed orders for attribution → outbox `order.reported` (`attributed_orders.source = api_push`); order status is never accepted (D-017).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| store_idrequired | path | string | |
| Idempotency-Keyrequired | header | string | Replays return the original |
Request body (OrderReport)
| Field | Type | Description |
|---|---|---|
| ordersrequired | OrderReportInput[] | OrderReportInput items (validated individually; invalid items are reported in rejected[])≥ 1 items · ≤ 100 items |
| orders[].cart_token | string | 1–255 characters |
| orders[].conversation_id | string | pattern `^conv_[0-9a-hjkmnp-tv-z]{26}$` |
| orders[].itemsrequired | OrderReportItemInput[] | ≤ 500 items |
| orders[].items[].amountrequired | Money | An amount with its currency (`03` §2.4 `Money`). |
| orders[].items[].amount.amountrequired | string | pattern `^-?\d+(\.\d{1,6})?$` |
| orders[].items[].amount.currencyrequired | string | pattern `^[A-Z]{3}$` |
| orders[].items[].external_variant_idrequired | string | 1–255 characters |
| orders[].items[].is_assisted | boolean | default false |
| orders[].items[].quantityrequired | integer | > 0 |
| orders[].order_number | string | 1–64 characters |
| orders[].ordered_atrequired | string | format date-time |
| orders[].platform_order_idrequired | string | 1–128 characters |
| orders[].totalrequired | Money | An amount with its currency (`03` §2.4 `Money`). |
| orders[].total.amountrequired | string | pattern `^-?\d+(\.\d{1,6})?$` |
| orders[].total.currencyrequired | string | pattern `^[A-Z]{3}$` |
Example request
curl -X POST "https://api.shopassist.coec.dk/v1/stores/sto_01j8000000e008000000000000/orders:report" \
-H "Authorization: Bearer $SHOPASSIST_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"orders":[{"cart_token":"string","conversation_id":"conv_01j8000000e008000000000000","items":[{"amount":{"amount":"499.95","currency":"DKK"},"external_variant_id":"string","is_assisted":false,"quantity":1}],"order_number":"string","ordered_at":"2026-09-28T10:15:30.123Z","platform_order_id":"string","total":{"amount":"499.95","currency":"DKK"}}]}'Response 202 (OrderReportAccepted)
| Field | Type | Description |
|---|---|---|
| acceptedrequired | integer | ≥ 0 |
| rejectedrequired | ItemRejection[] | |
| rejected[].errorrequired | ItemError | `{ code; message }` of a rejected item. |
| rejected[].error.coderequired | "validation_error" | "currency_mismatch" | "duplicate_external_id" | "too_many_variants" | "url_not_allowed" | |
| rejected[].error.messagerequired | string | |
| rejected[].indexrequired | integer | ≥ 0 |
{
"accepted": 0,
"rejected": [
{
"error": {
"code": "validation_error",
"message": "string"
},
"index": 0
}
]
}Errors
Every error uses the error envelope; the code field is stable.
400Bad Request401Unauthorized403Forbidden404Not Found409Conflict413Content Too Large422Unprocessable Content429Too Many Requests
Last updated on