Download OpenAPI specification:
Logistics operations API for the 4klyft platform.
This API provides comprehensive endpoints for managing:
All API endpoints (except /api/docs and /api/v1/iam/auth/*) require JWT Bearer token authentication.
Include the token in the Authorization header:
Authorization: Bearer <your-jwt-token>
API requests are rate-limited to ensure fair usage. Standard limits are:
Represents an acceptance rule set for auto-accepting/rejecting sourced orders.
Rule sets define conditions under which orders from a channel should be automatically accepted, rejected, or held for review.
Retrieve a list of acceptance rule sets, optionally filtered by channel.
| channelId | string Example: channelId=01HQWXYZ1234567890ABCDEF Filter by sales channel ID |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Reject high-value orders",
- "conditions": [
- {
- "property1": [
- {
- "property1": "string",
- "property2": "string"
}
], - "property2": [
- {
- "property1": "string",
- "property2": "string"
}
]
}
], - "action": "accept",
- "isActive": true,
- "priority": 0,
- "createdAt": "2024-06-14T10:30:00+00:00"
}
]
}Create a new acceptance rule set for a sales channel.
Acceptance rule set data
| channelId required | string Sales channel ID |
| name required | string Human-readable name |
required | Array of objects |
| action required | string Enum: "accept" "reject" "hold" |
| isActive | boolean Default: true |
| priority | integer Default: 0 Lower = evaluated first |
{- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Reject high-value orders",
- "conditions": [
- {
- "logic": "and",
- "rules": [
- {
- "field": "totalInCents",
- "operator": "eq",
- "value": "100000",
- "description": "Total exceeds 1000 EUR"
}
]
}
], - "action": "hold",
- "isActive": true,
- "priority": 0
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Reject high-value orders",
- "conditions": [
- {
- "property1": [
- {
- "property1": "string",
- "property2": "string"
}
], - "property2": [
- {
- "property1": "string",
- "property2": "string"
}
]
}
], - "action": "accept",
- "isActive": true,
- "priority": 0,
- "createdAt": "2024-06-14T10:30:00+00:00"
}Retrieve a single acceptance rule set by its ID.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Acceptance rule set ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Reject high-value orders",
- "conditions": [
- {
- "property1": [
- {
- "property1": "string",
- "property2": "string"
}
], - "property2": [
- {
- "property1": "string",
- "property2": "string"
}
]
}
], - "action": "accept",
- "isActive": true,
- "priority": 0,
- "createdAt": "2024-06-14T10:30:00+00:00"
}Import multiple orders from structured data for a specific channel.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Channel ULID |
The new BulkImportResult resource
required | Array of objects [ 1 .. 500 ] items Array of order data to import. |
| skipDuplicates | boolean Default: true Whether to skip duplicate orders. |
{- "orders": [
- {
- "property1": "string",
- "property2": "string"
}
], - "skipDuplicates": true
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "totalOrders": 50,
- "imported": 45,
- "skipped": 3,
- "failed": 2,
- "errors": [
- {
- "externalOrderId": "#1001",
- "error": "Invalid order data"
}
]
}Represents per-channel analytics metrics for sales channels.
Provides volume, acceptance rates, sync success rates, and processing metrics.
Retrieve analytics metrics for all sales channels within a given time period.
| period | string Default: "30d" Enum: "today" "7d" "30d" "90d" "all_time" Example: period=30d Time period for analytics |
| sortBy | string Default: "orders" Enum: "revenue" "orders" "acceptance_rate" "sync_success_rate" Example: sortBy=orders Sort channels by metric |
| limit | integer [ 1 .. 100 ] Default: 50 Example: limit=50 Maximum number of channels to return |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Online Store",
- "channelType": "string",
- "totalOrdersImported": 1248,
- "totalOrdersFailed": 12,
- "ordersAccepted": 1180,
- "ordersRejected": 56,
- "ordersHeldForReview": 12,
- "totalSyncs": 672,
- "successfulSyncs": 665,
- "failedSyncs": 7,
- "acceptanceRate": 0.945,
- "syncSuccessRate": 0.99,
- "totalRevenueInCents": 18720000,
- "averageOrderValueInCents": 15000,
- "averageProcessingTimeSeconds": 45.2,
- "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "period": "today"
}
]
}Retrieve detailed analytics metrics for a single sales channel.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Channel ULID |
| period | string Default: "30d" Enum: "today" "7d" "30d" "90d" "all_time" Example: period=30d Time period for analytics |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Online Store",
- "channelType": "string",
- "totalOrdersImported": 1248,
- "totalOrdersFailed": 12,
- "ordersAccepted": 1180,
- "ordersRejected": 56,
- "ordersHeldForReview": 12,
- "totalSyncs": 672,
- "successfulSyncs": 665,
- "failedSyncs": 7,
- "acceptanceRate": 0.945,
- "syncSuccessRate": 0.99,
- "totalRevenueInCents": 18720000,
- "averageOrderValueInCents": 15000,
- "averageProcessingTimeSeconds": 45.2,
- "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "period": "today"
}Re-authorize an existing channel via OAuth.
POST /api/sales/channels/{channelId}/reconnect
Resolves the channel's connected shop SERVER-SIDE and returns the
provider authorize URL (with the channel bound into the signed state) the
browser must navigate to. The UI needs no shop-domain input — it POSTs
the channel id and redirects the user to authorizationUrl.
Retrieve a paginated list of sales channels with optional filters.
| type | string Example: type=manual Filter by channel type |
| status | string Enum: "active" "paused" "disconnected" Example: status=active Filter by channel status |
| merchantId | string Example: merchantId=01HQWXYZ1234567890ABCDEF Filter to channels linked to this merchant (ULID) |
| page | integer >= 1 Default: 1 Example: page=1 Page number for pagination |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Example: itemsPerPage=30 Number of items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}
]
}Connect a new sales channel to import orders from an e-commerce platform.
Sales channel connection data
| name required | string Display name for the sales channel |
| code required | string Short operator-assigned code, unique per tenant. Uppercase alphanumerics with single internal dashes, 2-12 chars (lowercase is accepted and upcased). Embedded in human-facing document numbers (e.g. ORD-WEB-2026-0001). Immutable once set. |
| type required | string Platform type |
| credentials required | object Platform-specific credentials |
object or null Order-sync configuration. Omit the block, or any key within it, to take the domain defaults. |
{- "name": "My Online Store",
- "code": "WEB",
- "type": "manual",
- "credentials": {
- "apiKey": "xxx",
- "apiSecret": "xxx",
- "storeDomain": "store.example.com"
}, - "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "statusFilters": [
- "string"
], - "daysToLookBack": 7
}
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}List the channels the connected store exposes so an operator can pick the channel_code a Sales Channel binds to. Reaches the store over its Integration connection credentials. A credential/transport failure (or a connector without discovery support) returns a clean 4xx, never a 500.
| connectionId required | string Example: 01HQWXYZ1234567890ABCDEF Integration connection ULID |
| only_enabled | boolean Example: only_enabled=true When true, return only channels that are enabled on the store |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "connectionId": "string",
- "channels": [
- {
- "code": "string",
- "name": "string",
- "enabled": true,
- "locales": [
- "string"
], - "defaultLocale": "en_US",
- "currencies": [
- "string"
], - "defaultCurrency": "USD"
}
]
}Aggregate the per-channel catalog-drift data across all of the tenant's channels into one in-sync / drifted / never-pushed rollup with a per-channel breakdown.
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "sync-health",
- "totals": {
- "inSync": 240,
- "drifted": 12,
- "neverPushed": 30
}, - "channels": [
- {
- "channelId": "string",
- "channelName": "string",
- "inSync": 80,
- "drifted": 4,
- "neverPushed": 10
}
]
}Test connectivity to an e-commerce platform with provided credentials.
Connection test data
| type required | string Platform type |
| credentials required | object Platform-specific credentials |
{- "type": "manual",
- "credentials": {
- "apiKey": "xxx",
- "apiSecret": "xxx",
- "storeDomain": "store.example.com"
}
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "connected": true,
- "errorCode": "string",
- "errorMessage": "string",
- "checkedAt": "string",
- "storeInfo": {
- "property1": "string",
- "property2": "string"
}
}Recompute each listing's effective-content hash and compare to the last-pushed version; variants that differ (or were never pushed) are drifted.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "channelId": "string",
- "driftedCount": 0,
- "items": [
- {
- "variantRef": "string",
- "variantName": "string",
- "productName": "string",
- "sku": "string",
- "currentHash": "string",
- "headHash": "string",
- "contentVersion": 0,
- "driftState": "never_pushed",
- "lastPushedAt": "string"
}
]
}Recompute each listing's effective-content hash and compare to the last-pushed HEAD; the variants that differ (or were never pushed) are returned as a paginated, enriched grid.
| channelId required | string ChannelDriftRow identifier |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "variantId": "string",
- "variantName": "string",
- "productName": "string",
- "sku": "string",
- "currentHash": "string",
- "headHash": "string",
- "contentVersion": 0,
- "driftState": "never_pushed",
- "lastPushedAt": "string"
}
]
}Compute the field-level delta between the variant's current effective content and the last-pushed HEAD. status=no_baseline when never pushed, in_sync when unchanged, drifted otherwise.
| channelId required | string VariantDriftDiff identifier |
| variantId required | string VariantDriftDiff identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "variantId": "string",
- "channelId": "string",
- "status": "drifted",
- "fields": [
- {
- "path": "string",
- "op": "add",
- "from": "string",
- "to": "string"
}
]
}Queue an async, tracked catalog import: pull the channel's products into the local Catalog, creating variants and per-channel listings, and record a products sync run. Returns the channel; the import counts appear on the settled run (Sync History + Jobs panel).
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Return the original JSON the channel sent for an external order (as stored on the inbox). Used by Sync-run details to inspect the payload behind a failed record. 404 when no inbound message was recorded for the pair.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF01 Sales channel ULID |
| externalOrderId required | string Example: 27 The channel's own order id (as shown on the sync record) |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "channelId": "01HQWXYZ1234567890ABCDEF01",
- "externalOrderId": "27",
- "inboundMessageId": "01HQWXYZ1234567890ABCDEF05",
- "platform": "woocommerce",
- "payload": "string",
- "receivedAt": "2026-06-14T10:30:00+00:00"
}Queue an async, tracked catalog publish: resolve effective per-channel content for every listing, push it to the channel, stamp the publication version, and record a products push run. Returns the channel; the publish counts appear on the settled run (Sync History + Jobs panel).
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
| force | boolean Default: false Republish ALL in-scope variants regardless of drift (propagate now — e.g. push freshly-converted prices onto existing records). Default false = drift-aware (skip unchanged). |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Queue an async, tracked inventory publish: resolve available-to-promise for every listing, translate it through the channel backorder policy (defaults to deny), push the quantity to the channel, and record an inventory push run. Returns the channel; the publish counts appear on the settled run (Sync History + Jobs panel).
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Resolves the channel's previously connected shop server-side and returns the provider authorize URL (channel bound into the signed state). No shop input required.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "channelId": "",
- "authorizationUrl": "string",
- "state": "string",
- "expiresInSeconds": 0
}Retrieve a paginated list of sync runs for a single sales channel.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
| status | string Enum: "success" "failed" Example: status=failed Filter by sync status |
| page | integer >= 1 Default: 1 Example: page=1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Example: itemsPerPage=30 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "type": "orders",
- "status": "success",
- "itemsSynced": 42,
- "itemsFailed": 0,
- "itemsUnchanged": 3,
- "durationSeconds": 12.5,
- "startedAt": "2024-06-14T10:30:00+00:00",
- "completedAt": "2024-06-14T10:30:12+00:00",
- "errorMessage": "Connection timeout after 30s",
- "errorCode": "AUTH_FAILED",
- "errorCategory": "user",
- "itemsTruncated": false
}
]
}Retrieve a paginated, action-filterable list of the individual records (orders) a sync run created, updated, skipped, or failed.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF01 Sales channel ULID |
| syncId required | string Example: 01HQWXYZ1234567890ABCDEF02 Sync run ULID |
| action | string Enum: "created" "updated" "unchanged" "skipped" "failed" Example: action=failed Filter by outcome |
| page | integer >= 1 Default: 1 Example: page=1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Example: itemsPerPage=30 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF03",
- "syncId": "01HQWXYZ1234567890ABCDEF02",
- "externalId": "#1001",
- "resourceUri": "glacia:///sales/orders/01HQWXYZ1234567890ABCDEF04",
- "label": "ORD-1001",
- "kind": "order",
- "action": "created",
- "errorCode": "INVALID_ARGUMENT",
- "errorMessage": "Order must have at least one line item",
- "occurredAt": "2026-06-14T10:30:04+00:00",
- "changes": [
- {
- "field": "total",
- "from": "1000",
- "to": "1500"
}
]
}
]
}Returns the topics this channel is currently subscribed to on its external platform.
| channelId required | string ChannelWebhookSubscription identifier |
| page | integer >= 1 Default: 1 |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "topic": "string",
- "channelId": "string",
- "externalWebhookId": "string",
- "callbackUrl": "string",
- "subscribedAt": "string"
}
]
}Registers the topic with the channel's external platform. Idempotent — returns the existing subscription if the topic is already registered.
| channelId required | string ChannelWebhookSubscription identifier |
Topic to subscribe to.
| topic required | string Platform-specific topic identifier (e.g. orders/create) |
{- "topic": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "topic": "string",
- "channelId": "string",
- "externalWebhookId": "string",
- "callbackUrl": "string",
- "subscribedAt": "string"
}Returns the delivery audit log — most recent first — with topic, processing status, and any error message. Optional topic / status filters narrow to a specific subscription or error class.
| channelId required | string ChannelWebhookDelivery identifier |
| topic | string Filter by topic |
| status | string Enum: "received" "processed" "signature_failed" "invalid_payload" "failed" Filter by processing status |
| page | integer >= 1 Default: 1 |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "channelId": "string",
- "topic": "string",
- "platform": "string",
- "status": "received",
- "errorMessage": "string",
- "externalEventId": "string",
- "receivedAt": "string",
- "processedAt": "string"
}
]
}Get a single webhook topic subscription
| channelId required | string ChannelWebhookSubscription identifier |
| topic required | string ChannelWebhookSubscription identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "topic": "string",
- "channelId": "string",
- "externalWebhookId": "string",
- "callbackUrl": "string",
- "subscribedAt": "string"
}Removes the topic subscription on the external platform. Idempotent — 204 even when the topic was not subscribed.
| channelId required | string ChannelWebhookSubscription identifier |
| topic required | string ChannelWebhookSubscription identifier |
Retrieve a single sales channel by its ULID.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}HARD-delete a sales channel, removing it and freeing its code for reuse. Permitted ONLY for never-synced channels (no orders, listings, or sync runs) — the read model exposes a deletable flag to gate this. Channels with any history return 409 (errorCode OPERATION_NOT_ALLOWED); disconnect them instead.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
Bind a Catalog Assortment to this channel with a direction — pull (import scope) or push (publish scope). A channel carries at most one link per direction; binding a direction that is already bound REPLACES its assortment. The assortment is referenced by its Catalog Assortment id (a bare ULID). Binding the same assortment on both directions is rejected with 409 (errorCode CATALOG_LINK_LOOP) — the import↔publish loop guard.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
Catalog link binding data
| assortmentId required | string Catalog Assortment id (bare ULID) |
| direction required | string Enum: "pull" "push" Binding direction: pull (import scope) or push (publish scope) |
{- "assortmentId": "01HQWXYZ1234567890ABCDEF",
- "direction": "push"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Clear this channel's catalog link for a direction (pull/push). Idempotent — a no-op when nothing is bound in that direction. Returns the refreshed channel.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
| direction required | string Enum: "pull" "push" Example: push Binding direction to clear: pull or push |
Partial-merge the channel's connection credentials (e.g. WooCommerce store_url / consumer_key / consumer_secret) into its backing Integration connection vault. The body is a PARTIAL map — send only the keys you are changing; an omitted or blank ("") key keeps its existing vaulted value ("leave blank = keep"). Supplying credentials clears the channel's auth-failure block so sync resumes. A store_url ending in /wp-admin is normalized (the segment is trimmed) since the connector appends /wp-json. The response carries the refreshed channel plus a connectionStatus — the outcome of probing the connection with the merged credentials (advisory; the credentials are saved regardless).
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
Partial credential map — only the keys being changed
required | object Partial credential map; only non-empty keys are applied |
{- "credentials": {
- "consumer_key": "ck_new",
- "consumer_secret": "cs_new"
}
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "channel": {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}, - "connectionStatus": {
- "connected": true,
- "errorCode": "string",
- "errorMessage": "string",
- "checkedAt": "string",
- "storeInfo": {
- "property1": "string",
- "property2": "string"
}
}
}Set the per-channel default invoicing currency and/or the enabled currency set. Omit defaultCurrency to leave it; set clearDefaultCurrency to remove it. supportedCurrencies null leaves the set; an array replaces it (empty = no restriction).
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
The updated Channel resource
| defaultCurrency | string or null = 3 characters ISO-4217 default currency code prefilled on invoices/payments for this channel. Omit (null) to leave the current default unchanged; set $clearDefaultCurrency to remove it. |
| supportedCurrencies | Array of strings The enabled set of ISO-4217 codes for this channel. Null = leave alone; an array (possibly empty) = replace. Empty array means "no restriction". |
| clearDefaultCurrency | boolean Default: false When true, explicitly clears the channel's default currency. |
{- "defaultCurrency": "str",
- "supportedCurrencies": [
- "string"
], - "clearDefaultCurrency": false
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Disconnect a sales channel. This action is permanent.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Link this sales channel to a merchant (seller-of-record). Additive — existing channels stay unlinked until this is called.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
Merchant link data
| merchantId required | string Merchant (seller-of-record) ULID |
{- "merchantId": "01HQWXYZ1234567890ABCDEF"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Set the per-channel default storefront locale (e.g. en_US) and/or the enabled locale set. These are typically PULLED from the channel API (refresh-capabilities) rather than typed. Omit defaultLocale to leave it; set clearDefaultLocale to remove it. supportedLocales null leaves the set; an array replaces it (empty = no restriction).
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
The updated Channel resource
| defaultLocale | string or null^([A-Za-z]{2,3}([_-][A-Za-z0-9]{2,8})*)$ Default storefront locale ( |
| supportedLocales | Array of strings The enabled set of locale codes for this channel. Null = leave alone; an array (possibly empty) = replace. Empty array means "no restriction". |
| clearDefaultLocale | boolean Default: false When true, explicitly clears the channel's default locale. |
{- "defaultLocale": "string",
- "supportedLocales": [
- "string"
], - "clearDefaultLocale": false
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Pause order synchronization for a sales channel.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Pull the channel's default/supported currencies and locales from its platform API and apply them fill-when-empty: the discovered DEFAULT currency/locale is adopted ONLY when the operator has not set one (never clobbers an override), while the discovered SUPPORTED sets replace the current sets. Discovery is best-effort — a channel that exposes nothing (or has no backing connection) simply keeps its current config. Returns the refreshed channel.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Resume order synchronization for a paused sales channel.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Rename the channel and/or replace its order-sync configuration. Both fields are independently optional — omit one to leave that part of the channel untouched; omitting both is a no-op. syncSettings is a whole-value replacement: omitted keys within it fall back to the domain defaults (autoImportEnabled true, syncIntervalMinutes 15, statusFilters null, daysToLookBack 7) rather than retaining the channel's current values.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
New channel name and/or sync settings
| name | string New display name for the channel |
object Replacement order-sync configuration block |
{- "name": "EU Storefront",
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "statusFilters": [
- "string"
], - "daysToLookBack": 7
}
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Set the single sourcing Principal (Inventory goods-owner) this channel sells for — the keystone for owner-correct order resolution. The principal is referenced as an opaque ResourceUri (glacia:///inventory/principals/{id}).
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
Sourcing principal reference
| principalRef required | string Sourcing Principal ResourceUri (glacia:///inventory/principals/{id}) |
{- "principalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Queue an async, tracked order sync from the sales channel (cursor/incremental).
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Clear this sales channel's merchant (seller-of-record) link. Idempotent — a no-op when already unlinked.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "name": "My Online Store",
- "code": "WEB",
- "type": "string",
- "status": "active",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "merchantId": "01HQWXYZ1234567890ABCDEF",
- "sourcingPrincipalRef": "glacia:///inventory/principals/01HQWXYZ1234567890ABCDEF",
- "pullAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "pushAssortmentId": "01HQWXYZ1234567890ABCDEF",
- "defaultFulfilmentPolicyId": "01HQWXYZ1234567890ABCDEF",
- "defaultCurrency": "EUR",
- "supportedCurrencies": [
- "string"
], - "defaultLocale": "en_US",
- "supportedLocales": [
- "string"
], - "hasWebhook": true,
- "deletable": true,
- "syncSettings": {
- "autoImportEnabled": true,
- "syncIntervalMinutes": 15,
- "daysToLookBack": 7
}, - "connectorConfig": {
- "channel_code": "DOMUS_EU"
}, - "connectionId": "01JQ8Z9K3M4N5P6Q7R8S9T0V1W",
- "webhookTopics": [
- "string"
], - "lastSyncAt": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}For every channel the variant is listed on, recompute its effective-content hash and compare to the last-pushed version: never_pushed (no publication), drifted (hash changed), or in_sync.
| variantRef required | string Example: 01HQWXYZ1234567890ABCDEF Catalog Variant ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "variantRef": "string",
- "items": [
- {
- "channelId": "string",
- "channelName": "string",
- "externalVariantId": "string",
- "drift": "string",
- "pushedVersion": 0,
- "pushedAt": "string"
}
]
}Endpoint for external platforms to send webhook events.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Sales channel ULID |
{- "type": "/errors/validation-error",
- "title": "Validation Error",
- "status": 400,
- "detail": "The provided input is invalid",
- "violations": [
- {
- "propertyPath": "code",
- "message": "This value should not be blank."
}
], - "instance": "string"
}Retrieve the health and connectivity status of a sales channel.
| channelId required | string Example: 01HQWXYZ1234567890ABCDEF Channel ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "status": "healthy",
- "responseTimeMs": 250,
- "lastCheckedAt": "2024-06-14T10:30:00+00:00",
- "errorMessage": "Connection timeout after 30s",
- "consecutiveFailures": 0
}Represents a set of field mapping rules for a sales channel.
Mapping rule sets define how fields from external platforms are transformed and mapped to the internal order format during import.
Retrieve a list of field mapping rule sets.
| channelId | string Example: channelId=01HQWXYZ1234567890ABCDEF Filter by sales channel ID |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Order Mapping",
- "rules": [
- {
- "sourceField": "customer_name",
- "targetField": "customer.name",
- "transform": "trim",
- "defaultValue": null,
- "priority": 10
}
], - "isActive": true,
- "createdAt": "2024-06-14T10:30:00+00:00"
}
]
}Create a new field mapping rule set for a sales channel.
Mapping rule set data
| channelId required | string Sales channel ID to associate with |
| name required | string Display name for the rule set |
required | Array of objects Mapping rules |
| isActive | boolean Default: true |
{- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Order Mapping",
- "rules": [
- {
- "sourceField": "customer_name",
- "targetField": "customer.name",
- "transform": "trim",
- "defaultValue": "string",
- "priority": 10
}
], - "isActive": true
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Order Mapping",
- "rules": [
- {
- "sourceField": "customer_name",
- "targetField": "customer.name",
- "transform": "trim",
- "defaultValue": null,
- "priority": 10
}
], - "isActive": true,
- "createdAt": "2024-06-14T10:30:00+00:00"
}Retrieve a single mapping rule set by its ID.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Mapping rule set ID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Order Mapping",
- "rules": [
- {
- "sourceField": "customer_name",
- "targetField": "customer.name",
- "transform": "trim",
- "defaultValue": null,
- "priority": 10
}
], - "isActive": true,
- "createdAt": "2024-06-14T10:30:00+00:00"
}Update an existing field mapping rule set.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Mapping rule set ID |
The updated MappingRuleSet resource
| channelId required | string <= 255 characters |
| name required | string <= 255 characters |
required | Array of objects Mapping rules. |
| isActive | boolean Default: true |
{- "channelId": "string",
- "name": "string",
- "rules": [
- {
- "property1": "string",
- "property2": "string"
}
], - "isActive": true
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "name": "Order Mapping",
- "rules": [
- {
- "sourceField": "customer_name",
- "targetField": "customer.name",
- "transform": "trim",
- "defaultValue": null,
- "priority": 10
}
], - "isActive": true,
- "createdAt": "2024-06-14T10:30:00+00:00"
}Represents an order imported from a sales channel.
Orders are imported from e-commerce platforms and processed for fulfillment.
Retrieve a paginated list of orders with optional filters.
| channelId | string Example: channelId=01HQWXYZ1234567890ABCDEF Filter by sales channel ID |
| status | string Enum: "pending" "processing" "ready" "partially_fulfilled" "fulfilled" "cancelled" Example: status=pending Filter by order status |
| fulfillmentStatus | string Enum: "unfulfilled" "partially_fulfilled" "fulfilled" Example: fulfillmentStatus=unfulfilled Filter by fulfillment status |
| dateFrom | string <date-time> Example: dateFrom=2024-06-01T00:00:00+00:00 Filter orders from this date (ISO 8601) |
| dateTo | string <date-time> Example: dateTo=2024-06-14T23:59:59+00:00 Filter orders until this date (ISO 8601) |
| page | integer >= 1 Default: 1 Example: page=1 Page number for pagination |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Example: itemsPerPage=30 Number of items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}
]
}Retrieve a single order by its ULID.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Order ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Resume the OrderFulfilmentLifecycleSaga when it has paused waiting for operator approval of a multi-source split. No-op if the saga is not in AwaitingApproval.
| id required | string Order identifier |
The new Order resource
| id | string Unique identifier (ULID) for the order |
| channelId | string Sales channel ID where the order originated |
| channelName | string or null Sales channel display name where the order originated |
| partnerId | string or null Partner ID linked to this order |
| partnerName | string or null Partner display name linked to this order |
| customerRef | string or null Resolved Customer master record ID (ULID) linked to this order |
| customerName | string or null Resolved customer display name linked to this order |
| customerEmail | string or null Resolved customer contact email linked to this order |
| resolutionStatus | string or null Value: "linked" |
| externalOrderId | string External order ID from the sales channel |
| orderNumber | string Default: "" Human-readable Sales Order number allocated on import |
| status | string Enum: "pending" "processing" "ready" "partially_fulfilled" "fulfilled" "cancelled" |
| fulfillmentStatus | string Enum: "unfulfilled" "partially_fulfilled" "fulfilled" |
object Customer information | |
OrderAddress (object) or null | |
OrderAddress (object) or null | |
Array of objects Order line items | |
| totalInCents | integer Total order amount in cents |
| currency | string ISO 4217 currency code |
| totalItems | integer Total number of items in the order |
| totalWeightGrams | integer or null Total weight of the order in grams |
| orderDate | string or null Date when the order was placed (ISO 8601) |
| createdAt | string Timestamp when the order was imported (ISO 8601) |
| updatedAt | string Timestamp when the order was last updated (ISO 8601) |
| childFulfilmentOrderIds | Array of strings IDs of FulfilmentOrders spawned by this order |
| childShipmentIds | Array of strings IDs of Shipments created downstream for this order |
| returnIds | Array of strings IDs of RMAs raised against this order |
| childFulfilmentOrdersCount | integer Default: 0 Number of FulfilmentOrders spawned by this order |
| childShipmentsCount | integer Default: 0 Number of Shipments created downstream for this order |
| returnsCount | integer Default: 0 Number of RMAs raised against this order |
| paymentStatus | string Enum: "unpaid" "authorized" "captured" "refunded" "failed" |
| paymentFailedReason | string or null Reason captured at the moment the order was last marked payment-failed |
| paymentCapturedAt | string or null Timestamp when payment was captured (ISO 8601) |
| paymentRefundedAt | string or null Timestamp when payment was refunded (ISO 8601) |
| stockReservationRef | string or null ResourceUri of the stock reservation covering this order; null when no reservation is placed. Required (with captured payment and no blocking hold) before the order can be marked ready for fulfilment, UNLESS the order's inventory.out_of_stock hold is overridden — an override waives this requirement. |
{- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Cancel an order. This will stop any pending fulfillment.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Order ULID |
Cancellation data
| reason | string or null Reason for cancellation |
{- "reason": "Customer requested cancellation"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Create one FulfilmentOrder for a subset of the order's lines, targeting a single custodian. Repeatable until the order is fully fulfilled. The recipient address is resolved server-side from the order; the backend validates the requested quantities against the order and rejects over-fulfilment. Returns the id of the FulfilmentOrder (created asynchronously).
| id required | string Example: 01HQWXYZ1234567890ABCDEF Sales order ULID |
Custodian, optional warehouse, and the lines to fulfil
| custodianId required | string <ulid> |
| warehouseId | string or null <ulid> |
| deliveryInstructions | string or null |
required | Array of objects |
{- "custodianId": "string",
- "warehouseId": "string",
- "deliveryInstructions": "string",
- "lines": [
- {
- "orderLineRef": "string",
- "quantity": 1
}
]
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "orderId": "",
- "custodianId": "",
- "warehouseId": "string",
- "status": "created"
}Record payment capture on an order. Required before the order can advance to READY.
| id required | string Order identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Record a payment failure with a freeform reason.
| id required | string Order identifier |
The new Order resource
| reason required | string <= 500 characters Default: "" |
{- "reason": ""
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Record a payment refund on an order.
| id required | string Order identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Mark an order as ready for fulfillment after processing is complete.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Order ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Reject the OrderFulfilmentLifecycleSaga's multi-source split plan with a reason. The saga dispatches CancelOrderCommand which cascade-cancels every still-pending FulfilmentOrder.
| id required | string Order identifier |
The new Order resource
| reason required | string <= 500 characters Default: "" Reason for rejecting the split — surfaced on the resulting
|
{- "reason": ""
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Start processing an order to create loads for fulfillment.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Order ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "channelName": "Main Store",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Logistics",
- "customerRef": "01HQWXYZ1234567890ABCDEF",
- "customerName": "Acme Corp",
- "customerEmail": "billing@acme.example",
- "resolutionStatus": "linked",
- "externalOrderId": "#1001",
- "orderNumber": "ORD0000042",
- "status": "pending",
- "fulfillmentStatus": "unfulfilled",
- "customer": {
- "name": "John Doe",
- "email": "john@example.com",
- "phone": "+31612345678"
}, - "shippingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "billingAddress": {
- "name": "string",
- "street": "string",
- "street2": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "country": "string",
- "phone": "string",
- "instructions": "string"
}, - "orderLines": [
- {
- "sequence": 1,
- "lineId": "line_1",
- "sku": "PROD-001",
- "name": "Widget",
- "quantity": 2,
- "priceInCents": 2500
}
], - "totalInCents": 5000,
- "currency": "EUR",
- "totalItems": 3,
- "totalWeightGrams": 1500,
- "orderDate": "2024-06-14T10:30:00+00:00",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00",
- "childFulfilmentOrderIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childShipmentIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "returnIds": [
- "01HQWXYZ1234567890ABCDEF"
], - "childFulfilmentOrdersCount": 1,
- "childShipmentsCount": 1,
- "returnsCount": 0,
- "paymentStatus": "unpaid",
- "paymentFailedReason": "Card declined",
- "paymentCapturedAt": "string",
- "paymentRefundedAt": "string",
- "stockReservationRef": "glacia:///warehousing/stock-reservations/01HZ..."
}Retrieve a list of operations in the retry queue.
| channelId | string Example: channelId=01HQWXYZ1234567890ABCDEF Filter by channel ID |
| status | string Enum: "pending" "retrying" "succeeded" "failed" "abandoned" Example: status=pending Filter by retry status |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "operationType": "Glacia\\Sales\\Application\\Order\\SyncOrdersCommand",
- "payload": {
- "channelId": "01HQWXYZ1234567890ABCDEF"
}, - "status": "pending",
- "attempts": 2,
- "maxAttempts": 5,
- "lastAttemptAt": "2024-06-14T10:30:00+00:00",
- "nextRetryAt": "2024-06-14T10:32:00+00:00",
- "errorMessage": "Connection timeout",
- "createdAt": "2024-06-14T10:30:00+00:00"
}
]
}Retrieve a single retry queue operation by its ID.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Retry operation ID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "operationType": "Glacia\\Sales\\Application\\Order\\SyncOrdersCommand",
- "payload": {
- "channelId": "01HQWXYZ1234567890ABCDEF"
}, - "status": "pending",
- "attempts": 2,
- "maxAttempts": 5,
- "lastAttemptAt": "2024-06-14T10:30:00+00:00",
- "nextRetryAt": "2024-06-14T10:32:00+00:00",
- "errorMessage": "Connection timeout",
- "createdAt": "2024-06-14T10:30:00+00:00"
}Generate an order number
The new OrderNumber resource
| number | string The generated order number |
| type | string Resource type |
| barcode | string or null GS1-128 barcode (if applicable) |
| generatedAt | string Generation timestamp (ISO 8601) |
{- "number": "ORD0000000001",
- "type": "sales.order_number",
- "barcode": "string",
- "generatedAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "number": "ORD0000000001",
- "type": "sales.order_number",
- "barcode": "string",
- "generatedAt": "string"
}The auto-resolution of an unmapped channel order line to a catalog Variant,
served by GET /api/sales/channel-listings/resolve for the "Map this SKU"
drawer. Given a channel + the line's external ids (+ SKU fallback), it returns
either a confident resolvedVariantId (the drawer auto-fills) or a list of
candidates (the drawer shows suggestions). The mapping itself is NEVER
created here — the pin button reuses the CreateChannelListing command.
Retrieve a paginated list of per-channel product → Variant mappings.
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "channelId": "string",
- "externalVariantId": "gid://platform/ProductVariant/123",
- "externalProductId": "string",
- "externalSku": "ABC-123",
- "variantId": "string",
- "variantName": "Red T-Shirt (Large)",
- "productId": "string",
- "productName": "Classic T-Shirt",
- "matchedBy": "variant_id",
- "channelTitleOverride": "Red T-Shirt (Large)",
- "status": "active",
- "contentVersion": 3,
- "contentHash": "a1b2c3…",
- "lastSyncedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Create a channel listing mapping
The new ChannelListing resource
| channelId required | string <= 100 characters |
| variantId required | string <= 100 characters |
| matchedBy required | string Enum: "variant_id" "product_id" "sku" |
| externalVariantId | string or null <= 255 characters |
| externalProductId | string or null <= 255 characters |
| externalSku | string or null <= 255 characters |
| channelTitleOverride | string or null <= 255 characters |
| status | string or null Enum: "active" "disabled" "unmapped" |
{- "channelId": "string",
- "variantId": "string",
- "matchedBy": "variant_id",
- "externalVariantId": "string",
- "externalProductId": "string",
- "externalSku": "string",
- "channelTitleOverride": "string",
- "status": "active"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "channelId": "string",
- "externalVariantId": "gid://platform/ProductVariant/123",
- "externalProductId": "string",
- "externalSku": "ABC-123",
- "variantId": "string",
- "variantName": "Red T-Shirt (Large)",
- "productId": "string",
- "productName": "Classic T-Shirt",
- "matchedBy": "variant_id",
- "channelTitleOverride": "Red T-Shirt (Large)",
- "status": "active",
- "contentVersion": 3,
- "contentHash": "a1b2c3…",
- "lastSyncedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Resolves the internal Catalog Variant for an unmapped channel order line from its external variant/product ids and SKU, using the Identification channel keys the catalog import attached. Returns a confident resolvedVariantId or a list of candidates; never creates the mapping.
| channelId required | any The owning Sales Channel ID (ULID) |
| externalVariantId | any The channel's variant id from the order line |
| externalProductId | any The channel's product id from the order line |
| sku | any The order line SKU (fallback match) |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "unmapped-line-resolution",
- "resolvedVariantId": "string",
- "resolvedVariantName": "Red T-Shirt (Large)",
- "resolvedSku": "ABC-123",
- "matchReason": "channel_variant_key",
- "candidates": [
- {
- "variantId": "string",
- "name": "Red T-Shirt (Large)",
- "sku": "ABC-123",
- "matchReason": "channel_product_key"
}
]
}Get a channel listing
| id required | string ChannelListing identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "channelId": "string",
- "externalVariantId": "gid://platform/ProductVariant/123",
- "externalProductId": "string",
- "externalSku": "ABC-123",
- "variantId": "string",
- "variantName": "Red T-Shirt (Large)",
- "productId": "string",
- "productName": "Classic T-Shirt",
- "matchedBy": "variant_id",
- "channelTitleOverride": "Red T-Shirt (Large)",
- "status": "active",
- "contentVersion": 3,
- "contentHash": "a1b2c3…",
- "lastSyncedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Remove a channel listing
| id required | string ChannelListing identifier |
{- "type": "/errors/validation-error",
- "title": "Validation Error",
- "status": 400,
- "detail": "The provided input is invalid",
- "violations": [
- {
- "propertyPath": "code",
- "message": "This value should not be blank."
}
], - "instance": "string"
}Update a channel listing
| id required | string ChannelListing identifier |
The updated ChannelListing resource
| matchedBy | string Enum: "variant_id" "product_id" "sku" |
| status | string Enum: "active" "disabled" "unmapped" |
| channelTitleOverride | string or null <= 255 characters |
{- "matchedBy": "variant_id",
- "status": "active",
- "channelTitleOverride": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "channelId": "string",
- "externalVariantId": "gid://platform/ProductVariant/123",
- "externalProductId": "string",
- "externalSku": "ABC-123",
- "variantId": "string",
- "variantName": "Red T-Shirt (Large)",
- "productId": "string",
- "productName": "Classic T-Shirt",
- "matchedBy": "variant_id",
- "channelTitleOverride": "Red T-Shirt (Large)",
- "status": "active",
- "contentVersion": 3,
- "contentHash": "a1b2c3…",
- "lastSyncedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}A per-order customer identity-resolution review item (design §3, §9.3): the outcome, the scored candidates, and the operator actions (confirm / assign / reject). Keyed by the order id (the resolution id is derived from it).
Paginated queue of orders awaiting customer resolution (pending/held by default).
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "outcome": "auto_linked",
- "reviewState": "none",
- "chosenCustomerId": "string",
- "ruleSetVersion": "string",
- "candidates": [
- {
- "customerId": "string",
- "customerName": "string",
- "score": 0,
- "matchedKinds": [
- "string"
], - "autoEligible": false,
- "email": "string",
- "phone": "string",
- "street": "string",
- "city": "string",
- "postalCode": "string",
- "countryCode": "string",
- "matchedByEmail": false,
- "matchedByPhone": false,
- "authoritativeMatch": false
}
], - "decidedAt": "string"
}
]
}Get the resolution for an order
| id required | string CustomerResolution identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "outcome": "auto_linked",
- "reviewState": "none",
- "chosenCustomerId": "string",
- "ruleSetVersion": "string",
- "candidates": [
- {
- "customerId": "string",
- "customerName": "string",
- "score": 0,
- "matchedKinds": [
- "string"
], - "autoEligible": false,
- "email": "string",
- "phone": "string",
- "street": "string",
- "city": "string",
- "postalCode": "string",
- "countryCode": "string",
- "matchedByEmail": false,
- "matchedByPhone": false,
- "authoritativeMatch": false
}
], - "decidedAt": "string"
}Assign an operator-chosen customer to the order
| id required | string CustomerResolution identifier |
The new CustomerResolution resource
| customerId required | string Default: "" The customer master record (ULID) to link to the order |
{- "customerId": ""
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "outcome": "auto_linked",
- "reviewState": "none",
- "chosenCustomerId": "string",
- "ruleSetVersion": "string",
- "candidates": [
- {
- "customerId": "string",
- "customerName": "string",
- "score": 0,
- "matchedKinds": [
- "string"
], - "autoEligible": false,
- "email": "string",
- "phone": "string",
- "street": "string",
- "city": "string",
- "postalCode": "string",
- "countryCode": "string",
- "matchedByEmail": false,
- "matchedByPhone": false,
- "authoritativeMatch": false
}
], - "decidedAt": "string"
}Book the order to the channel CpD bucket (operator override)
| id required | string CustomerResolution identifier |
The new CustomerResolution resource
| id | string The order (ULID) whose customer is being resolved |
| outcome | string Enum: "auto_linked" "pending_review" "held" "no_match" |
| reviewState | string Enum: "none" "open" "resolved" "rejected" |
| chosenCustomerId | string or null The linked customer (ULID) when resolved |
| ruleSetVersion | string Rule-set version the decision was made under |
Array of objects (ResolutionCandidate) | |
| decidedAt | string or null When the decision was recorded (ISO 8601) |
{- "id": "string",
- "outcome": "auto_linked",
- "reviewState": "none",
- "chosenCustomerId": "string",
- "ruleSetVersion": "string",
- "candidates": [
- {
- "customerId": "string",
- "customerName": "string",
- "score": 0,
- "matchedKinds": [
- "string"
], - "autoEligible": false,
- "email": "string",
- "phone": "string",
- "street": "string",
- "city": "string",
- "postalCode": "string",
- "countryCode": "string",
- "matchedByEmail": false,
- "matchedByPhone": false,
- "authoritativeMatch": false
}
], - "decidedAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "outcome": "auto_linked",
- "reviewState": "none",
- "chosenCustomerId": "string",
- "ruleSetVersion": "string",
- "candidates": [
- {
- "customerId": "string",
- "customerName": "string",
- "score": 0,
- "matchedKinds": [
- "string"
], - "autoEligible": false,
- "email": "string",
- "phone": "string",
- "street": "string",
- "city": "string",
- "postalCode": "string",
- "countryCode": "string",
- "matchedByEmail": false,
- "matchedByPhone": false,
- "authoritativeMatch": false
}
], - "decidedAt": "string"
}Confirm a suggested customer (links it to the order)
| id required | string CustomerResolution identifier |
The new CustomerResolution resource
| customerId required | string Default: "" The customer master record (ULID) to link to the order |
{- "customerId": ""
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "outcome": "auto_linked",
- "reviewState": "none",
- "chosenCustomerId": "string",
- "ruleSetVersion": "string",
- "candidates": [
- {
- "customerId": "string",
- "customerName": "string",
- "score": 0,
- "matchedKinds": [
- "string"
], - "autoEligible": false,
- "email": "string",
- "phone": "string",
- "street": "string",
- "city": "string",
- "postalCode": "string",
- "countryCode": "string",
- "matchedByEmail": false,
- "matchedByPhone": false,
- "authoritativeMatch": false
}
], - "decidedAt": "string"
}Reject all candidates (no link)
| id required | string CustomerResolution identifier |
The new CustomerResolution resource
| id | string The order (ULID) whose customer is being resolved |
| outcome | string Enum: "auto_linked" "pending_review" "held" "no_match" |
| reviewState | string Enum: "none" "open" "resolved" "rejected" |
| chosenCustomerId | string or null The linked customer (ULID) when resolved |
| ruleSetVersion | string Rule-set version the decision was made under |
Array of objects (ResolutionCandidate) | |
| decidedAt | string or null When the decision was recorded (ISO 8601) |
{- "id": "string",
- "outcome": "auto_linked",
- "reviewState": "none",
- "chosenCustomerId": "string",
- "ruleSetVersion": "string",
- "candidates": [
- {
- "customerId": "string",
- "customerName": "string",
- "score": 0,
- "matchedKinds": [
- "string"
], - "autoEligible": false,
- "email": "string",
- "phone": "string",
- "street": "string",
- "city": "string",
- "postalCode": "string",
- "countryCode": "string",
- "matchedByEmail": false,
- "matchedByPhone": false,
- "authoritativeMatch": false
}
], - "decidedAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "outcome": "auto_linked",
- "reviewState": "none",
- "chosenCustomerId": "string",
- "ruleSetVersion": "string",
- "candidates": [
- {
- "customerId": "string",
- "customerName": "string",
- "score": 0,
- "matchedKinds": [
- "string"
], - "autoEligible": false,
- "email": "string",
- "phone": "string",
- "street": "string",
- "city": "string",
- "postalCode": "string",
- "countryCode": "string",
- "matchedByEmail": false,
- "matchedByPhone": false,
- "authoritativeMatch": false
}
], - "decidedAt": "string"
}A customer's credit / accounts-receivable profile (Customer 360, task #82): the operator-set credit limit + payment terms, and the DERIVED outstanding balance, overdue amount, and remaining available credit.
Read via GET; the credit terms are set via PATCH .../credit-terms. The AR figures are derived from the customer's Finance invoices/payments — see {@see \Glacia\Sales\Infrastructure\Persistence\Doctrine\Query\DbalCustomerCreditQueryService}.
Retrieve a paginated list of customer master records.
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "displayName": "Acme Corp",
- "type": "regular",
- "status": "active",
- "segments": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}
]
}Register a customer master record for an existing partner
The new Customer resource
| partnerId required | string <= 100 characters The existing Partner this customer wraps (the AR counterparty). |
| displayName required | string <= 255 characters |
{- "partnerId": "string",
- "displayName": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "displayName": "Acme Corp",
- "type": "regular",
- "status": "active",
- "segments": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}Credit limit, payment terms, outstanding AR balance, overdue amount, and available credit.
| customerId required | string CustomerCredit identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "customerId": "string",
- "creditLimit": 5000,
- "paymentTermsDays": 30,
- "arBalance": 1234.56,
- "overdue": 200,
- "availableCredit": 3765.44,
- "currency": "EUR"
}Set a customer's credit terms (limit, payment terms, currency)
| customerId required | string CustomerCredit identifier |
The updated CustomerCredit resource
| creditLimit | number or null >= 0 |
| paymentTermsDays | integer or null >= 0 |
| currency | string = 3 characters |
{- "creditLimit": 0,
- "paymentTermsDays": 0,
- "currency": "str"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "customerId": "string",
- "creditLimit": 5000,
- "paymentTermsDays": 30,
- "arBalance": 1234.56,
- "overdue": 200,
- "availableCredit": 3765.44,
- "currency": "EUR"
}Lifetime value, order count, last-order date, and status for the customer.
| customerId required | string CustomerKpi identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "customerId": "string",
- "ltv": 1234.56,
- "currency": "EUR",
- "orderCount": 7,
- "lastOrderAt": "string",
- "status": "active"
}Get a customer master record
| id required | string Customer identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "displayName": "Acme Corp",
- "type": "regular",
- "status": "active",
- "segments": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}Link an order to this customer master record
| id required | string Customer identifier |
The new Customer resource
| orderId required | string <= 100 characters |
{- "orderId": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "displayName": "Acme Corp",
- "type": "regular",
- "status": "active",
- "segments": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}Add a segment / tag to this customer
| id required | string Customer identifier |
The new Customer resource
| segment required | string <= 64 characters |
{- "segment": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "displayName": "Acme Corp",
- "type": "regular",
- "status": "active",
- "segments": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}Remove a segment / tag from this customer
| segment required | string The segment / tag to remove |
| id required | string Customer identifier |
{- "type": "/errors/validation-error",
- "title": "Validation Error",
- "status": 400,
- "detail": "The provided input is invalid",
- "violations": [
- {
- "propertyPath": "code",
- "message": "This value should not be blank."
}
], - "instance": "string"
}A Sales merchant — the seller-of-record / channel-operator profile. LINKS to an existing Partner (the selling party's legal/contact identity) and layers selling-specific state on top: the seller-of-record selling name, default sales currency, and the tax registration used when selling.
Tenant-managed reference data. The linked partner is immutable once set.
Retrieve a paginated list of merchant (seller-of-record) profiles.
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "code": "ACME",
- "sellingName": "Acme Store",
- "status": "onboarding",
- "defaultCurrency": "USD",
- "sellerTaxRegistration": "DE123456789",
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Register a merchant profile for an existing partner
The new Merchant resource
| partnerId required | string <= 100 characters The existing Partner this merchant wraps (the selling party's legal identity). |
| code required | string [ 2 .. 12 ] characters ^([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*)$ Short operator-assigned code, unique per tenant. Embedded in human-facing
document numbers, so the format is deliberately narrow — see
{@see \Glacia\Sales\Domain\Merchant\MerchantCode}. Normalized to uppercase
by the domain, so |
| sellingName required | string <= 255 characters |
| defaultCurrency required | string = 3 characters |
| sellerTaxRegistration | string or null <= 64 characters |
{- "partnerId": "string",
- "code": "string",
- "sellingName": "string",
- "defaultCurrency": "str",
- "sellerTaxRegistration": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "code": "ACME",
- "sellingName": "Acme Store",
- "status": "onboarding",
- "defaultCurrency": "USD",
- "sellerTaxRegistration": "DE123456789",
- "createdAt": "string",
- "updatedAt": "string"
}Get a merchant profile
| id required | string Merchant identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "code": "ACME",
- "sellingName": "Acme Store",
- "status": "onboarding",
- "defaultCurrency": "USD",
- "sellerTaxRegistration": "DE123456789",
- "createdAt": "string",
- "updatedAt": "string"
}Update a merchant selling profile
| id required | string Merchant identifier |
The updated Merchant resource
| sellingName | string <= 255 characters |
| defaultCurrency | string = 3 characters |
| sellerTaxRegistration | string or null <= 64 characters |
{- "sellingName": "string",
- "defaultCurrency": "str",
- "sellerTaxRegistration": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "code": "ACME",
- "sellingName": "Acme Store",
- "status": "onboarding",
- "defaultCurrency": "USD",
- "sellerTaxRegistration": "DE123456789",
- "createdAt": "string",
- "updatedAt": "string"
}Activate a merchant profile
| id required | string Merchant identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "code": "ACME",
- "sellingName": "Acme Store",
- "status": "onboarding",
- "defaultCurrency": "USD",
- "sellerTaxRegistration": "DE123456789",
- "createdAt": "string",
- "updatedAt": "string"
}Deactivate a merchant profile
| id required | string Merchant identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "partnerId": "string",
- "partnerName": "Acme Corp",
- "code": "ACME",
- "sellingName": "Acme Store",
- "status": "onboarding",
- "defaultCurrency": "USD",
- "sellerTaxRegistration": "DE123456789",
- "createdAt": "string",
- "updatedAt": "string"
}Retrieves the collection of Return resources.
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "number": "string",
- "orderId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "requestedBy": "string",
- "reason": "string",
- "customerNote": "string",
- "status": "string",
- "eligibilityWindow": "string",
- "inboundShipmentId": "string",
- "resolution": "string",
- "refundAmountCents": 0,
- "restockingFeeCents": 0,
- "currencyCode": "string",
- "inspectionNotes": "string",
- "operatorDecision": "string",
- "rejectionReason": "string",
- "cancellationReason": "string",
- "requestedAt": "string",
- "lines": [
- {
- "id": "string",
- "originalOrderLineRef": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "currencyCode": "string",
- "perLineReason": "string",
- "inspectedQuantity": 0,
- "disposition": "string",
- "inspectionNotes": "string"
}
]
}
]
}Creates a Return resource.
The new Return resource
| orderId required | string Default: "" Originating Sales.Order id (ULID) |
| partnerId required | string Default: "" Customer Partner ID (ULID) |
| requestedBy required | string Default: "" Identity URI of the customer or operator initiating the return |
| reason | string Enum: "damaged" "wrong_item" "not_as_described" "no_longer_needed" "defective_on_arrival" "late_delivery" "other" |
| customerNote | string or null Optional free-form note from the customer |
Array of objects (ReturnLineInput) | |
| orderDeliveredAt | string or null When the originating order was delivered (drives eligibility window) |
{- "orderId": "",
- "partnerId": "",
- "requestedBy": "",
- "reason": "damaged",
- "customerNote": "string",
- "lines": [
- {
- "originalOrderLineRef": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "currencyCode": "string",
- "perLineReason": "string"
}
], - "orderDeliveredAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "number": "string",
- "orderId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "requestedBy": "string",
- "reason": "string",
- "customerNote": "string",
- "status": "string",
- "eligibilityWindow": "string",
- "inboundShipmentId": "string",
- "resolution": "string",
- "refundAmountCents": 0,
- "restockingFeeCents": 0,
- "currencyCode": "string",
- "inspectionNotes": "string",
- "operatorDecision": "string",
- "rejectionReason": "string",
- "cancellationReason": "string",
- "requestedAt": "string",
- "lines": [
- {
- "id": "string",
- "originalOrderLineRef": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "currencyCode": "string",
- "perLineReason": "string",
- "inspectedQuantity": 0,
- "disposition": "string",
- "inspectionNotes": "string"
}
]
}Retrieves a Return resource.
| id required | string Return identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "number": "string",
- "orderId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "requestedBy": "string",
- "reason": "string",
- "customerNote": "string",
- "status": "string",
- "eligibilityWindow": "string",
- "inboundShipmentId": "string",
- "resolution": "string",
- "refundAmountCents": 0,
- "restockingFeeCents": 0,
- "currencyCode": "string",
- "inspectionNotes": "string",
- "operatorDecision": "string",
- "rejectionReason": "string",
- "cancellationReason": "string",
- "requestedAt": "string",
- "lines": [
- {
- "id": "string",
- "originalOrderLineRef": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "currencyCode": "string",
- "perLineReason": "string",
- "inspectedQuantity": 0,
- "disposition": "string",
- "inspectionNotes": "string"
}
]
}Creates a Return resource.
| id required | string Return identifier |
The new Return resource
| cancelledBy required | string Default: "" Identity URI of the actor cancelling |
| reason required | string Default: "" Cancellation reason |
{- "cancelledBy": "",
- "reason": ""
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "number": "string",
- "orderId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "requestedBy": "string",
- "reason": "string",
- "customerNote": "string",
- "status": "string",
- "eligibilityWindow": "string",
- "inboundShipmentId": "string",
- "resolution": "string",
- "refundAmountCents": 0,
- "restockingFeeCents": 0,
- "currencyCode": "string",
- "inspectionNotes": "string",
- "operatorDecision": "string",
- "rejectionReason": "string",
- "cancellationReason": "string",
- "requestedAt": "string",
- "lines": [
- {
- "id": "string",
- "originalOrderLineRef": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "currencyCode": "string",
- "perLineReason": "string",
- "inspectedQuantity": 0,
- "disposition": "string",
- "inspectionNotes": "string"
}
]
}Creates a Return resource.
| id required | string Return identifier |
The new Return resource
| operatorRef required | string Default: "" Identity URI of the inspecting operator |
Array of objects (LineInspectionInput) | |
| inspectionNotes | string or null Optional inspection notes |
{- "operatorRef": "",
- "results": [
- {
- "lineId": "string",
- "actualReceivedQuantity": 0,
- "disposition": "string",
- "notes": "string"
}
], - "inspectionNotes": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "number": "string",
- "orderId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "requestedBy": "string",
- "reason": "string",
- "customerNote": "string",
- "status": "string",
- "eligibilityWindow": "string",
- "inboundShipmentId": "string",
- "resolution": "string",
- "refundAmountCents": 0,
- "restockingFeeCents": 0,
- "currencyCode": "string",
- "inspectionNotes": "string",
- "operatorDecision": "string",
- "rejectionReason": "string",
- "cancellationReason": "string",
- "requestedAt": "string",
- "lines": [
- {
- "id": "string",
- "originalOrderLineRef": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "currencyCode": "string",
- "perLineReason": "string",
- "inspectedQuantity": 0,
- "disposition": "string",
- "inspectionNotes": "string"
}
]
}Creates a Return resource.
| id required | string Return identifier |
The new Return resource
| rejectedBy required | string Default: "" Identity URI of the operator rejecting |
| reason required | string Default: "" Reason for rejection |
{- "rejectedBy": "",
- "reason": ""
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "number": "string",
- "orderId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "requestedBy": "string",
- "reason": "string",
- "customerNote": "string",
- "status": "string",
- "eligibilityWindow": "string",
- "inboundShipmentId": "string",
- "resolution": "string",
- "refundAmountCents": 0,
- "restockingFeeCents": 0,
- "currencyCode": "string",
- "inspectionNotes": "string",
- "operatorDecision": "string",
- "rejectionReason": "string",
- "cancellationReason": "string",
- "requestedAt": "string",
- "lines": [
- {
- "id": "string",
- "originalOrderLineRef": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "currencyCode": "string",
- "perLineReason": "string",
- "inspectedQuantity": 0,
- "disposition": "string",
- "inspectionNotes": "string"
}
]
}Creates a Return resource.
| id required | string Return identifier |
The new Return resource
| operatorRef required | string Default: "" Identity URI of the resolving operator |
| resolution | string Enum: "refunded" "partially_refunded" "store_credit" "replaced" "rejected_after_inspection" |
| refundAmountCents | integer or null Refund amount in cents (required when resolution generates a credit note) |
| restockingFeeCents | integer or null Restocking fee in cents |
| currencyCode | string or null ISO 4217 currency code (required when monetary amounts are supplied) |
{- "operatorRef": "",
- "resolution": "refunded",
- "refundAmountCents": 0,
- "restockingFeeCents": 0,
- "currencyCode": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "number": "string",
- "orderId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "requestedBy": "string",
- "reason": "string",
- "customerNote": "string",
- "status": "string",
- "eligibilityWindow": "string",
- "inboundShipmentId": "string",
- "resolution": "string",
- "refundAmountCents": 0,
- "restockingFeeCents": 0,
- "currencyCode": "string",
- "inspectionNotes": "string",
- "operatorDecision": "string",
- "rejectionReason": "string",
- "cancellationReason": "string",
- "requestedAt": "string",
- "lines": [
- {
- "id": "string",
- "originalOrderLineRef": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "currencyCode": "string",
- "perLineReason": "string",
- "inspectedQuantity": 0,
- "disposition": "string",
- "inspectionNotes": "string"
}
]
}