Endpoint reference
The tables below are a quick scan of the routes and filters. For full request/response schemas, the interactive explorer is the richer view.
OpenAPI spec
Section titled “OpenAPI spec”The full machine-readable contract is served publicly (no auth, no shop data) at:
GET https://prod.logistified.app/api/v1/openapi.jsonPoint Postman, Insomnia, or any OpenAPI 3.1 client at that URL to generate a typed client or browse every parameter and response shape.
Endpoints
Section titled “Endpoints”GET endpoints need a read-scope bearer token (a write key works too).
POST / PATCH / DELETE need a write-scope token.
Purchase orders — reading
Section titled “Purchase orders — reading”| Path | Returns |
|---|---|
GET /api/v1/purchase-orders | List (filters: status, supplierId, search, dateFrom, dateTo, paidStatus, locationId, variantId, sku, limit, cursor) |
GET /api/v1/purchase-orders/{id} | Full detail — header, line items, shipment, addresses, payments, documents |
GET /api/v1/purchase-orders/{id}/line-items | Line items |
GET /api/v1/purchase-orders/{id}/payments | Payments |
GET /api/v1/purchase-orders/{id}/documents | Document metadata |
GET /api/v1/purchase-orders/{id}/shipment | Shipment |
GET /api/v1/purchase-orders/{id}/shipments | All shipments, each with its line allocations |
GET /api/v1/purchase-orders/{id}/addresses | Billing + shipping addresses |
GET /api/v1/purchase-orders/{id}/receipt-schedule | Receiving / incoming schedule |
GET /api/v1/purchase-orders/{id}/cost-sync-history | Cost-sync history — every unit-cost update this order proposed, with its outcome (?variantIds=a,b narrows). “Proposed” and “failed” rows may still have been applied |
GET /api/v1/purchase-orders/{id}/log | Activity log |
GET /api/v1/purchase-orders/{id}/credits | Applied + available supplier credits |
Purchase orders — writing
Section titled “Purchase orders — writing”| Path | Does |
|---|---|
POST /api/v1/purchase-orders | Create a draft. 201 + Location. An empty body {} is a valid empty draft |
PATCH /api/v1/purchase-orders/{id} | Update header fields (at least one). status is not accepted here |
DELETE /api/v1/purchase-orders/{id} | Delete a Draft outright, or soft-delete a Cancelled order |
POST /api/v1/purchase-orders/{id}/line-items | Add catalog line items (bulk, 1–500). 201 |
POST /api/v1/purchase-orders/{id}/line-items/custom | Add one non-catalog line. 201 |
PATCH /api/v1/purchase-orders/{id}/line-items | Update line items (bulk, 1–500). updateSupplier: true also writes the supplier-related values back to the supplier’s catalogue |
DELETE /api/v1/purchase-orders/{id}/line-items?lineItemIds=a,b | Delete line items (bulk). Can partly succeed — check failed[] |
POST /api/v1/purchase-orders/{id}/status | Move the order’s status |
POST /api/v1/purchase-orders/{id}/confirm | Record confirmed quantities — lines or confirmAll |
POST /api/v1/purchase-orders/{id}/receive | Record received quantities (absolute totals) |
POST /api/v1/purchase-orders/{id}/unreceive | Take back received quantities (deltas) |
POST /api/v1/purchase-orders/{id}/complete | Complete the order and run the cost sync |
POST /api/v1/purchase-orders/{id}/quick-complete | Receive + sync + complete, in one call from In Progress |
POST /api/v1/purchase-orders/{id}/shopify-sync | Push received quantities to Shopify |
POST /api/v1/purchase-orders/{id}/shopify-sync/reset | Clear the sync bookkeeping (Shopify untouched) |
Stock takes
Section titled “Stock takes”Read-only.
| Path | Returns |
|---|---|
/api/v1/stock-takes | List (filters: status, locationId, search, limit, cursor) |
/api/v1/stock-takes/reasons | Configured stock-take reasons |
/api/v1/stock-takes/{id} | Full detail — header + line items |
/api/v1/stock-takes/{id}/line-items | Line items |
Stock adjustments
Section titled “Stock adjustments”| Path | Returns |
|---|---|
/api/v1/stock-adjustments | List (filters: status, locationId, reason, createdBy, search, limit, cursor) |
/api/v1/stock-adjustments/{id} | Full detail — header + line items |
/api/v1/stock-adjustments/{id}/line-items | Line items |
Adjustments are the delta-only sibling of stock takes: a line carries a signed delta (and the resulting value change), never a counted quantity. The header carries the operator (createdBy), the live netQuantityChange, and the revertOf / revertedBy links when the document is part of a revert pair. Reasons are shared with stock takes — read them from /api/v1/stock-takes/reasons.
Transfer orders
Section titled “Transfer orders”Read-only.
| Path | Returns |
|---|---|
/api/v1/transfer-orders | List (filters: status, search, dateFrom, dateTo, fromLocationId, toLocationId, variantId, sku, limit, cursor) |
/api/v1/transfer-orders/{id} | Full detail — header (incl. line items), addresses, log |
/api/v1/transfer-orders/{id}/line-items | Line items |
/api/v1/transfer-orders/{id}/shipment | Shipment |
/api/v1/transfer-orders/{id}/documents | Document metadata |
/api/v1/transfer-orders/{id}/addresses | From + to addresses |
/api/v1/transfer-orders/{id}/log | Activity log |
Manufacturing orders
Section titled “Manufacturing orders”Read-only.
| Path | Returns |
|---|---|
/api/v1/manufacturing-orders | List (filters: status — repeatable — executionMode, productionLocationId — repeatable — search, dateField, dateFrom, dateTo, includeMeasures, limit, cursor) |
/api/v1/manufacturing-orders/{id} | Full detail — items to build, materials, and the linked purchase orders / transfers / stock releases, plus computed progress when includeMeasures was requested |
/api/v1/manufacturing-orders/{id}/log | Activity log |
Forecast views
Section titled “Forecast views”Read-only. A forecast view is a saved forecast scope you configure in the app (locations, filters, columns, sort). The rows endpoint returns what the view shows: the response carries a columns[] descriptor — id, displayName (the column header in the app), type (string / number / boolean / date), optional unit (currency marks a money column; its currencyColumn names the row key holding that row’s currency code, null meaning the response’s currencyCode) and, for supply-mode views, period — and every row is an object keyed by those ids, plus variantId and productId on every row. Values are the table’s display values as JSON (dates as YYYY-MM-DD, blanks as null). Read columns[] on every page — the view’s columns may change whenever someone edits the view in the app.
| Path | Returns |
|---|---|
/api/v1/forecast-views | List of saved views: viewId, viewName, isStarred, isAutogenerated. Autogenerated (dashboard) views are hidden unless includeAutogenerated=true |
/api/v1/forecast-views/{id}/rows | The view’s rows, view-shaped: currencyCode, columns[], rows[], totalCount, cursor (params: limit — up to 1000, default 50 — cursor, variantIds CSV) |