Sandbox
The sandbox runs at https://sandbox-api.easypick.cz/v1 with its own database, tenant administration, API keys, and webhooks. It has no access to production boxes or shipments.
Simulate events
Section titled “Simulate events”Like production, the sandbox keeps shipment status separate from physical compartment_state. A simulated event can change one or both values; removed and door_available are not shipment statuses.
POST /sandbox/shipments/{shipment_id}/eventsContent-Type: application/json
{"event":"loaded"}| Event | Required starting state | Result |
|---|---|---|
loaded |
status=reserved, compartment_state=reserved |
Confirms virtual loading and sets status=loaded, compartment_state=occupied. |
picked_up |
status=loaded, compartment_state=occupied |
Confirms virtual pickup and sets status=picked_up, compartment_state=cooldown. |
door_available |
compartment_state=cooldown |
Ends cooldown and sets compartment_state=available; the shipment status does not change. |
expired |
status=reserved or loaded |
Sets status=expired; an empty reservation is released immediately, while a loaded compartment moves to compartment_state=awaiting_removal. |
fault |
status=reserved or loaded |
Sets terminal status=fault; the assigned compartment moves to compartment_state=awaiting_removal as a safety measure. |
removed |
status=cancelled, expired, or fault and compartment_state=awaiting_removal |
Confirms virtual removal without changing shipment status; door_available follows it. |
An invalid transition returns 409 invalid_sandbox_transition without changing state.
Suggested scenarios
Section titled “Suggested scenarios”reserved → loaded → picked_up → door_availablereserved → cancelled → door_availablereserved → loaded → expired → removed → door_availablereserved → loaded → fault → removed → door_available- Repeated
POST /shipmentswith the sameexternal_order_id POST /shipments/{id}/retryafter releasing the original faulted shipment- A webhook endpoint temporarily returning
500, followed by a successful retry
door_available is the canonical event for every actual compartment release, including immediate release of a reservation that was never loaded and release after removed. Public GET responses and webhook payloads include the current compartment_state.