Files
dashback/docs/api/routes/order/_id/shipment.post.md
2026-10-17 05:10:25 +02:00

3.5 KiB

POST /order/{id}/shipment

Protected. Requires a valid session cookie (credentials: 'include').

Create shipment for an order

Creates a new shipment manifest (Lieferschein) for an order containing one, some, or all items from the order. If lines is omitted or empty, all remaining unshipped items from the order are included automatically. On individual line items, amount is optional and defaults to the remaining unshipped quantity for that article. Auto-assigns the shipment number formatted as <order_number><shipment_prefix><index>, e.g. AUF-000001-L-1. Updates the materialized ordersummary table (shipped_quantity, is_shipped) and emits SSE events (order, shipment) so that the order list and summary tables are rerendered in real time.

Path parameters

Param Required Type Description
id yes integer Order ID

Body (JSON) — optional

Field Required Type Description
date no string Optional shipment date (defaults to current date)
externalNumber no string Optional external delivery note reference (defaults to order.externalNumber or order.number)
lines no object[] Optional positions to ship. If omitted, all remaining unshipped items are shipped.
lines[].sku yes string Article SKU
lines[].amount no number Quantity to ship. Defaults to remaining unshipped quantity for this SKU.
lines[].name no string
lines[].pu no number
lines[].net no number
lines[].rebate no number
lines[].taxrate no number
lines[].comment no string
{
  "date": "2026-08-10",
  "externalNumber": "…",
  "lines": [
    {
      "sku": "…",
      "amount": 1,
      "name": "…",
      "pu": 1,
      "net": 1,
      "rebate": 1,
      "taxrate": 1,
      "comment": "…"
    }
  ]
}

Response 201

Created shipment

{
  "shipment": {
    "id": 1,
    "number": "…",
    "type": "shipment",
    "entityId": 1,
    "externalNumber": "…",
    "date": "…",
    "createdAt": "…",
    "lineCount": 1,
    "packageCount": 1,
    "lines": [
      {
        "id": 1,
        "sku": "…",
        "name": "…",
        "pu": 1,
        "amount": 1,
        "net": 1,
        "rebate": 1,
        "taxrate": 1,
        "comment": "…"
      }
    ],
    "shippings": [
      {
        "id": 1,
        "manifestId": 1,
        "number": "…",
        "trackingCode": "…",
        "carrierId": 1,
        "carrier": "…",
        "type": "…",
        "state": "…"
      }
    ],
    "files": [
      {
        "id": 1,
        "manifestId": 1,
        "fileId": 1,
        "sort": 1,
        "hash": "…",
        "mimetype": "…",
        "name": "…",
        "size": 1,
        "created": "2026-08-10T00:00:00.000Z",
        "modified": "2026-08-10T00:00:00.000Z",
        "skeledash": "…",
        "thumbx": 1,
        "thumby": 1,
        "meta": {}
      }
    ],
    "state": "new"
  }
}

Errors

Status Description
400 Validation error or article not in order — {"error":"…"}
401 Unauthorized — {"error":"…"}
404 Order not found — {"error":"…"}
409 Cumulative shipment amount exceeds ordered amount, or all items are already shipped — {"error":"…"}

Generated from @openapi JSDoc. Do not edit by hand — run npm run docs:api.