order.shipment.create
Split an order into another parcel: move the given quantities of order items out of a parcel that has not been dispatched yet and into a new one, optionally from a different warehouse. Quantities are validated against what the source parcel still holds — asking for more is refused with exceeds_remaining and both numbers. The new parcel’s estimated delivery date is stamped here and never recalculated.
- Scope:
order.write - System: no
- Reachable from:
POST /v1/commands/order.shipment.create(tenant credential) · MCP toolorder.shipment.create· SDKclient.call('order.shipment.create', …) - Events:
shipment.created
Input (JSON Schema)
Section titled “Input (JSON Schema)”{ "properties": { "from_shipment_id": { "minLength": 1, "type": "string" }, "items": { "items": { "properties": { "order_item_id": { "minLength": 1, "type": "string" }, "qty": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "order_item_id", "qty" ], "type": "object" }, "minItems": 1, "type": "array" }, "order_id": { "minLength": 1, "type": "string" }, "warehouse_id": { "minLength": 1, "type": "string" } }, "required": [ "order_id", "items" ], "type": "object"}Result (200)
Section titled “Result (200)”{ "additionalProperties": false, "properties": { "estimated_delivery_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "order_id": { "type": "string" }, "shipment_id": { "type": "string" } }, "required": [ "order_id", "shipment_id", "estimated_delivery_date" ], "type": "object"}Errors
Section titled “Errors”validation_failed (400) · unauthorized (401) · forbidden (403) · conflict (409) · internal (500)