Recent API additions

Checked against local implementation on 17 September 2026. This describes the current code contract; deployment to a particular server is a separate fact.

17.09 — notifications12 CRUD operations: templates and warehouse bindings / 12 CRUD-операций: шаблоны и складские привязки. Email, internal, conditions, print attachments, filters, permissions.
11.09 — warehouse factsstock-lots, accepted_lots, requested_lot, fulfillment_lots, picked_quantity, include=consumables, transfer_kind.
09.09 — lifecycleProduct status_id: 1 / 2 / 3; acceptance cancel.
12.08 — SSCCGET /api/v2/closed-boxes: unique physical boxes, box balance and contents.
03.08 — cross-dockCases, supply/demand, allocations, scans, exceptions, print, loading, command recovery.
Related UI changesBatch automation, Ozon import corrections, account filters and acceptance-place UI improvements do not imply new public endpoints. Use documented operations. See the WMS user guide for UI workflows.

Documents, lots and physical stock

stocks.physical / stocks.aggregateArrays of warehouse totals: warehouse_id, warehouse_name, stockTotal, stockReserved, stockAvailable. stocks.available_by_warehouse is an object keyed by warehouse ID; these are not identical shapes.
GET /api/v2/products/{id}/stock-lotsPhysically placed quantities by lot and dates. An unassigned reservation cannot be subtracted from an arbitrary lot. Check quantity units and warehouse in the response.
accepted_lotsActual receipt lots. Expected, accepted and placed quantities are distinct measures; a difference does not itself indicate an API error.
requested_lot / fulfillment_lotsOrder requested_lot expresses a requirement; fulfillment_lots records actual picking and picked_quantity the picked amount. Multiple actual lots cannot be reduced to one date.
movement_type / operationPicking can emit a reservation-release and physical-issue pair. Distinguish operation instead of counting two physical issues. Transfers correlate through movement_group_id; transfer_kind specifies the kind.
GET /api/v2/closed-boxesActual sealed boxes with a unique SSCC: balance=1 and balance_unit=box. A packaging-type barcode from products is not a unique SSCC. Opened, shipped and expected-only boxes are excluded.
acceptance_dateFor standard/return creation (type_id=1/2), the current handler assigns server now() even when acceptance_date is supplied. Updating an existing acceptance accepts the date. Type 3 uses a separate cross-dock service. created_at/updated_at are technical timestamps, not the document date.
LifecycleAcceptance cancellation is a separate cancel command with state checks, not deletion. Prefer /lines; deprecated /offers remain for compatibility. See operation-specific constraints.