# `POST /order/{id}/shipping` Protected. Requires a valid session cookie (`credentials: 'include'`). Create shipping for an order Creates a shipping for the order. The shipping number is allocated from the `shipping` number sequence (prefix and counter from the numbers API). If `state` is `shipped`, stock is adjusted via the ledger and article history is written. ## Path parameters | Param | Required | Type | Description | |-------|----------|------|-------------| | `id` | yes | integer | Order ID | ## Body (JSON) | Field | Required | Type | Description | |-------|----------|------|-------------| | `carrierId` | yes | integer | Carrier ID | | `type` | yes | string | | | `state` | yes | string | | | `trackingCode` | no | string | Carrier parcel tracking code | | `warehouseId` | no | integer | Optional warehouse ID for stock deduction when state is shipped | ```json { "carrierId": 1, "type": "…", "state": "…", "trackingCode": "…", "warehouseId": 1 } ``` ## Response `201` Created shipping ```json { "shipping": { "id": 1, "manifestId": 1, "number": "…", "trackingCode": "…", "carrierId": 1, "carrier": "…", "type": "…", "state": "…" } } ``` ## Errors | Status | Description | |--------|-------------| | 400 | Validation error or no company selected — `{"error":"…"}` | | 401 | Unauthorized — `{"error":"…"}` | | 403 | Not authorized — `{"error":"…"}` | | 404 | Order or warehouse not found — `{"error":"…"}` | | 409 | Order already shipped — `{"error":"…"}` | --- _Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._