Новые возможности API

Сверено с локальной реализацией 17.09.2026. Перечень описывает контракт текущего кода; факт публикации на конкретный сервер проверяется отдельно.

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.
Связанные изменения интерфейсаАвтосборка батчей, корректировки импорта Ozon, фильтры счетов и отображение мест в приёмках не означают появления одноимённых публичных API. Используйте только методы из справочника. Пользовательские процессы описаны в руководстве WMS.

Документы, партии и фактические остатки

stocks.physical / stocks.aggregateМассивы складских итогов: warehouse_id, warehouse_name, stockTotal, stockReserved, stockAvailable. stocks.available_by_warehouse — объект с ключами ID складов. Не воспринимайте эти три поля как одинаковую структуру.
GET /api/v2/products/{id}/stock-lotsФизически размещённый товар по партиям и датам. Резерв без конкретной партии нельзя вычитать из произвольно выбранной партии. Сверяйте единицы количества и склад в ответе.
accepted_lotsФактические партии приёмки. Ожидание, фактическая приёмка и размещение — разные показатели. Их расхождение само по себе не означает ошибку API.
requested_lot / fulfillment_lotsВ строке заказа requested_lot описывает требование, fulfillment_lots — фактический подбор; picked_quantity — подобранное количество. Несколько фактических партий нельзя сводить к одной дате.
movement_type / operationПодбор может давать пару снятия резерва и физического списания. Различайте operation; не считайте обе строки двумя списаниями. Перемещения объединяются через movement_group_id; transfer_kind уточняет вид.
GET /api/v2/closed-boxesРеальные закрытые короба с уникальным SSCC: balance=1, balance_unit=box. Штрихкод типа упаковки из products не является уникальным SSCC. Открытые, отгруженные и только ожидаемые короба не входят в текущий закрытый остаток.
acceptance_dateПри создании обычной/возвратной приёмки (type_id=1/2) текущий обработчик ставит серверное now(), даже если передана acceptance_date. Изменение существующей приёмки принимает дату. Создание type_id=3 использует отдельный cross-dock сервис. created_at/updated_at — технические метки, не дата документа.
LifecycleОтмена приёмки — отдельная команда cancel с проверкой состояния; она не равна удалению. Для строк используйте /lines, а устаревшие /offers сохраняются для совместимости. Подробные ограничения смотрите у операции.