The Xpand Edge Orchestrator implements a "bulletin board" architecture where the orchestrator maintains state that other actors in the system can read and update. The orchestrator is responsible for:
The orchestrator acts as a central state repository, allowing different system components to coordinate through shared state rather than direct orchestration.
To support offline development mode with the orchestrator, the following can be applied:
/orders endpoints that manipulate the list of
orders more directly - POST /orders to create an order DELETE /orders, etc.The /orders set of endpoints are the key function of the orchestrator for synchronizing the
workflow of orders between the cloud and the edge machine, updating the cloud about the state
of the orders, and facilitating the fulfillment of the orders by serving the order data to
other edge services and receiving updates form them.
Retrieve all orders currently maintained by the orchestrator. These are orders that have been pulled from the edge-gateway and are available for fulfillment.
This list will include both queued orders as well as orders in state of
fetched, collecting, collected, ready, delivering, delivered.
The different actors in the system should filter orders for the states relevant to them.
[- {
- "id": "842",
- "status": "queued",
- "products": [
- {
- "productId": 123,
- "productExternalId": "J57S",
- "quantity": 2,
- "fulfilledQuantity": 0
}, - {
- "productId": 546,
- "quantity": 1,
- "fulfilledQuantity": 0,
- "modifiers": {
- "strength": "strong",
- "milk": "with milk"
}
}
], - "deliveryDate": "2023-06-15",
- "deliveryTime": "14:30",
- "priority": 1,
- "displayCode": 7465,
- "pinCode": 5364,
- "user": {
- "name": "John Doe",
- "address": "123 Main St, Anytown, AT 12345",
- "phoneNumber": "+1-555-123-4567",
- "locale": "en-US"
}
}
]Update the status of a specific order. This is used by fulfillment actors to report progress on order processing.
| orderId required | string The unique identifier of the order |
| status required | string (OrderStatus) Enum: "pending" "assigned" "picking" "picked" "delivered" "failed" Order status values:
|
| pickerId | string or null ID of the picker handling the order |
| notes | string Additional notes about the status update |
{- "status": "pending",
- "pickerId": "string",
- "notes": "string"
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Update the status and picked quantity of a specific item within an order. This is typically used by pickers to report item-level progress.
| orderId required | string The unique identifier of the order |
| productId required | string The product identifier |
| fulfilledQuantity required | integer >= 0 Quantity that was actually fulfilled |
| notes | string Additional notes about the product update |
{- "fulfilledQuantity": 0,
- "notes": "string"
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Retrieve all data collection tasks currently maintained by the orchestrator.
[- {
- "id": "string",
- "productId": "string",
- "status": "pending",
- "assignedTo": "string",
- "dataType": "weight",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}
]Create a new data collection task that will be maintained by the orchestrator.
| productId required | string Product ID requiring data collection |
| dataType required | string Enum: "weight" "dimensions" "images" "barcode" "expiry" Type of data to collect |
| priority required | string Enum: "low" "medium" "high" "urgent" Task priority level |
object Additional task metadata |
{- "productId": "string",
- "dataType": "weight",
- "priority": "low",
- "metadata": { }
}{- "id": "string",
- "productId": "string",
- "status": "pending",
- "assignedTo": "string",
- "dataType": "weight",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}Update the status of a data collection task. Used by actors performing the task.
| taskId required | string The unique identifier of the task |
| status required | string (TaskStatus) Enum: "pending" "assigned" "in_progress" "completed" "failed" "cancelled" Task status values:
|
| assignedTo | string or null ID of the actor assigned to the task |
| progress | integer [ 0 .. 100 ] Task completion percentage |
| notes | string Additional notes about the task status update |
| completedAt | string or null <date-time> When the task was completed |
{- "status": "pending",
- "assignedTo": "string",
- "progress": 100,
- "notes": "string",
- "completedAt": "2019-08-24T14:15:22Z"
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Retrieve all consolidation tasks currently maintained by the orchestrator.
[- {
- "id": "string",
- "orderIds": [
- "string"
], - "status": "pending",
- "assignedTo": "string",
- "consolidationType": "tote",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}
]Create a new consolidation task that will be maintained by the orchestrator.
| orderIds required | Array of strings Order IDs to consolidate |
| consolidationType required | string Enum: "tote" "pallet" "mixed" Type of consolidation to perform |
| priority required | string Enum: "low" "medium" "high" "urgent" Task priority level |
object Additional task metadata |
{- "orderIds": [
- "string"
], - "consolidationType": "tote",
- "priority": "low",
- "metadata": { }
}{- "id": "string",
- "orderIds": [
- "string"
], - "status": "pending",
- "assignedTo": "string",
- "consolidationType": "tote",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}Update the status of a consolidation task. Used by actors performing the task.
| taskId required | string The unique identifier of the task |
| status required | string (TaskStatus) Enum: "pending" "assigned" "in_progress" "completed" "failed" "cancelled" Task status values:
|
| assignedTo | string or null ID of the actor assigned to the task |
| progress | integer [ 0 .. 100 ] Task completion percentage |
| notes | string Additional notes about the task status update |
| completedAt | string or null <date-time> When the task was completed |
{- "status": "pending",
- "assignedTo": "string",
- "progress": 100,
- "notes": "string",
- "completedAt": "2019-08-24T14:15:22Z"
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Retrieve all pallet arrangement tasks currently maintained by the orchestrator.
[- {
- "id": "string",
- "palletIds": [
- "string"
], - "status": "pending",
- "assignedTo": "string",
- "arrangementType": "optimization",
- "targetLocation": "string",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}
]Create a new pallet arrangement task that will be maintained by the orchestrator.
| palletIds required | Array of strings Pallet IDs to arrange |
| arrangementType required | string Enum: "optimization" "maintenance" "emergency" Type of arrangement required |
| targetLocation | string Target location for arrangement |
| priority required | string Enum: "low" "medium" "high" "urgent" Task priority level |
object Additional task metadata |
{- "palletIds": [
- "string"
], - "arrangementType": "optimization",
- "targetLocation": "string",
- "priority": "low",
- "metadata": { }
}{- "id": "string",
- "palletIds": [
- "string"
], - "status": "pending",
- "assignedTo": "string",
- "arrangementType": "optimization",
- "targetLocation": "string",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}Update the status of a pallet arrangement task.
| taskId required | string The unique identifier of the task |
| status required | string (TaskStatus) Enum: "pending" "assigned" "in_progress" "completed" "failed" "cancelled" Task status values:
|
| assignedTo | string or null ID of the actor assigned to the task |
| progress | integer [ 0 .. 100 ] Task completion percentage |
| notes | string Additional notes about the task status update |
| completedAt | string or null <date-time> When the task was completed |
{- "status": "pending",
- "assignedTo": "string",
- "progress": 100,
- "notes": "string",
- "completedAt": "2019-08-24T14:15:22Z"
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Retrieve all pallet replenishment tasks currently maintained by the orchestrator.
[- {
- "id": "string",
- "palletId": "string",
- "status": "pending",
- "assignedTo": "string",
- "replenishmentType": "full",
- "products": [
- {
- "productId": "string",
- "quantity": 1
}
], - "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}
]Create a new pallet replenishment task that will be maintained by the orchestrator.
| palletId required | string Pallet ID requiring replenishment |
| replenishmentType required | string Enum: "full" "partial" "emergency" Type of replenishment required |
required | Array of objects (ProductQuantity) Products and quantities to replenish |
| priority required | string Enum: "low" "medium" "high" "urgent" Task priority level |
object Additional task metadata |
{- "palletId": "string",
- "replenishmentType": "full",
- "products": [
- {
- "productId": "string",
- "quantity": 1
}
], - "priority": "low",
- "metadata": { }
}{- "id": "string",
- "palletId": "string",
- "status": "pending",
- "assignedTo": "string",
- "replenishmentType": "full",
- "products": [
- {
- "productId": "string",
- "quantity": 1
}
], - "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}Update the status of a pallet replenishment task.
| taskId required | string The unique identifier of the task |
| status required | string (TaskStatus) Enum: "pending" "assigned" "in_progress" "completed" "failed" "cancelled" Task status values:
|
| assignedTo | string or null ID of the actor assigned to the task |
| progress | integer [ 0 .. 100 ] Task completion percentage |
| notes | string Additional notes about the task status update |
| completedAt | string or null <date-time> When the task was completed |
{- "status": "pending",
- "assignedTo": "string",
- "progress": 100,
- "notes": "string",
- "completedAt": "2019-08-24T14:15:22Z"
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Retrieve all order delivery (pickup) tasks currently maintained by the orchestrator.
[- {
- "id": "string",
- "orderId": "string",
- "status": "pending",
- "assignedTo": "string",
- "deliveryType": "pickup",
- "customerCode": "string",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}
]Create a new order delivery task that will be maintained by the orchestrator.
| orderId required | string Order ID to deliver |
| deliveryType required | string Enum: "pickup" "automated" "manual" Type of delivery method |
| customerCode required | string Customer pickup code |
| priority required | string Enum: "low" "medium" "high" "urgent" Task priority level |
object Additional task metadata |
{- "orderId": "string",
- "deliveryType": "pickup",
- "customerCode": "string",
- "priority": "low",
- "metadata": { }
}{- "id": "string",
- "orderId": "string",
- "status": "pending",
- "assignedTo": "string",
- "deliveryType": "pickup",
- "customerCode": "string",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}Update the status of an order delivery task.
| taskId required | string The unique identifier of the task |
| status required | string (TaskStatus) Enum: "pending" "assigned" "in_progress" "completed" "failed" "cancelled" Task status values:
|
| assignedTo | string or null ID of the actor assigned to the task |
| progress | integer [ 0 .. 100 ] Task completion percentage |
| notes | string Additional notes about the task status update |
| completedAt | string or null <date-time> When the task was completed |
{- "status": "pending",
- "assignedTo": "string",
- "progress": 100,
- "notes": "string",
- "completedAt": "2019-08-24T14:15:22Z"
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Retrieve all tote review tasks currently maintained by the orchestrator.
[- {
- "id": "string",
- "toteId": "string",
- "status": "pending",
- "assignedTo": "string",
- "reviewType": "quality",
- "orderId": "string",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}
]Create a new tote review task that will be maintained by the orchestrator.
| toteId required | string Tote ID to review |
| reviewType required | string Enum: "quality" "accuracy" "damage" "missing" Type of review required |
| orderId | string or null Associated order ID if applicable |
| priority required | string Enum: "low" "medium" "high" "urgent" Task priority level |
object Additional task metadata |
{- "toteId": "string",
- "reviewType": "quality",
- "orderId": "string",
- "priority": "low",
- "metadata": { }
}{- "id": "string",
- "toteId": "string",
- "status": "pending",
- "assignedTo": "string",
- "reviewType": "quality",
- "orderId": "string",
- "priority": "low",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "metadata": { }
}Update the status of a tote review task.
| taskId required | string The unique identifier of the task |
| status required | string (TaskStatus) Enum: "pending" "assigned" "in_progress" "completed" "failed" "cancelled" Task status values:
|
| assignedTo | string or null ID of the actor assigned to the task |
| progress | integer [ 0 .. 100 ] Task completion percentage |
| notes | string Additional notes about the task status update |
| completedAt | string or null <date-time> When the task was completed |
{- "status": "pending",
- "assignedTo": "string",
- "progress": 100,
- "notes": "string",
- "completedAt": "2019-08-24T14:15:22Z"
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Retrieve the task enablement state for all pickers in the system. Returns a dictionary mapping picker IDs to their enabled task types.
{- "property1": {
- "fulfillment": true,
- "dataCollection": true,
- "consolidation": true,
- "palletArrangement": true,
- "palletReplenishment": true,
- "orderDelivery": true,
- "toteReview": true,
- "maintenance": true
}, - "property2": {
- "fulfillment": true,
- "dataCollection": true,
- "consolidation": true,
- "palletArrangement": true,
- "palletReplenishment": true,
- "orderDelivery": true,
- "toteReview": true,
- "maintenance": true
}
}Retrieve the task enablement state for a specific picker.
| pickerId required | string The unique identifier of the picker |
{- "fulfillment": true,
- "dataCollection": true,
- "consolidation": true,
- "palletArrangement": true,
- "palletReplenishment": true,
- "orderDelivery": true,
- "toteReview": true,
- "maintenance": true
}Update the task enablement state for a specific picker. This controls which types of tasks the picker is allowed to perform.
| pickerId required | string The unique identifier of the picker |
| fulfillment required | boolean Whether fulfillment tasks are enabled for this picker |
| dataCollection required | boolean Whether data collection tasks are enabled for this picker |
| consolidation required | boolean Whether consolidation tasks are enabled for this picker |
| palletArrangement required | boolean Whether pallet arrangement tasks are enabled for this picker |
| palletReplenishment required | boolean Whether pallet replenishment tasks are enabled for this picker |
| orderDelivery required | boolean Whether order delivery tasks are enabled for this picker |
| toteReview required | boolean Whether tote review tasks are enabled for this picker |
| maintenance required | boolean Whether maintenance tasks are enabled for this picker |
{- "fulfillment": true,
- "dataCollection": true,
- "consolidation": true,
- "palletArrangement": true,
- "palletReplenishment": true,
- "orderDelivery": true,
- "toteReview": true,
- "maintenance": true
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}Partially update the task enablement state for a specific picker. Only the specified task types will be updated.
| pickerId required | string The unique identifier of the picker |
| fulfillment | boolean Whether fulfillment tasks are enabled for this picker |
| dataCollection | boolean Whether data collection tasks are enabled for this picker |
| consolidation | boolean Whether consolidation tasks are enabled for this picker |
| palletArrangement | boolean Whether pallet arrangement tasks are enabled for this picker |
| palletReplenishment | boolean Whether pallet replenishment tasks are enabled for this picker |
| orderDelivery | boolean Whether order delivery tasks are enabled for this picker |
| toteReview | boolean Whether tote review tasks are enabled for this picker |
| maintenance | boolean Whether maintenance tasks are enabled for this picker |
{- "fulfillment": true,
- "dataCollection": true,
- "consolidation": true,
- "palletArrangement": true,
- "palletReplenishment": true,
- "orderDelivery": true,
- "toteReview": true,
- "maintenance": true
}{- "error": "string",
- "message": "string",
- "details": { },
- "timestamp": "2019-08-24T14:15:22Z"
}