Создать черновик складского документа
Вид документа задаётся ключом type_key, а не идентификатором типа: тип по ключу разрешает сам модуль. Пустая date означает рабочую дату кабинета. entity_refs и payload разбираются строго — незнакомое поле отклоняется. Инвентаризация принимает свой payload со снимком-фильтром; снимок остатков сервер снимает сам в момент создания.
Читает Idempotency-Key — повтор того же запроса с тем же ключом отдаёт созданный черновик, а не второй. Номер документа выдаёт нумератор, поэтому своего замка от дубля у склада нет: без ключа сбой сети или повтор вебхука заводит вторую отгрузку.
При включённом документообороте stock_receipt требует подтверждённую закупку в basis_id; свободное поступление и неподходящее основание дают 409 stock_receipt_purchase_required. То же правило действует при правке и проведении ранее созданного черновика. Допоставка по претензии сохраняет основание-приёмку. Оприходование и режим без документооборота этим правилом не ограничиваются.
Поступление, перемещение и выпуск комплектации на склад внешней стороны (inbound_mode = external_receipt) отклоняются с 409 stock_external_inbound_only: такой склад пополняет только приёмка площадки. В ответе — warehouse_id склада-получателя; тем же кодом отвечают правка черновика и проведение. Разрешён один путь — перемещение со склада товаров в пути этой площадки.
Request
- Base URL: https://erp.akeda.ru
- URL: https://erp.akeda.ru/api/v1/stock/documents
- Auth: one of:
- HTTP bearer
- API key in header X-Api-Key
- OAuth 2 (authorization code, authorization URL https://erp.akeda.ru/oauth2/authorize, token URL https://erp.akeda.ru/oauth2/token, scopes: akeda:delegate)
- HTTP bearer
Headers
Slug выбранного кабинета; кабинет не является юрлицом
Ключ одной логической попытки команды. Единственная форма идемпотентности на уровне HTTP; читают его только операции, у которых этот параметр объявлен.
Повтор ТОГО ЖЕ запроса (метод, адрес с параметрами, тело) с тем же ключом не выполняет команду второй раз, а отдаёт первый успешный ответ с заголовком Idempotent-Replay: true. Тот же ключ с другим запросом — отказ 422 idempotency.key_mismatch, а не чужой ответ. Пока первая попытка ещё выполняется, повтор получает 409 idempotency.in_progress и Retry-After: он не ждёт и не выполняется второй раз.
Ключ принадлежит предъявителю в кабинете: человеку, кабинетному API-ключу или установке приложения. Одинаковый ключ у соседа — другая попытка.
Отказ 4xx ключ ОСВОБОЖДАЕТ: запрос отклонён до работы, в кабинете не изменилось ничего, и исправленный запрос с тем же ключом выполняется. Отказ 5xx ключ ЗАПИРАЕТ: записалось или нет — неизвестно, коммит мог случиться, а ответ до вас не доехать. Повтор с тем же ключом получает тот же статус и тот же машинный код, а команда второй раз не выполняется. Чтобы попробовать снова, прочитайте отдельным запросом, появился ли результат, и возьмите НОВЫЙ ключ.
И ответ, и запомненный отказ живут сутки; после этого тот же ключ — новая попытка, и команда выполняется заново. Ответы, несущие секрет (выдача токена, аренда секрета настройки), заголовок не читают: секрет отдаётся ровно один раз. Хранилище недоступно — 503 idempotency.unavailable, команда без защиты не выполняется; этот отказ приходит ДО заявки на ключ и потому ключ не тратит.
Для естественного ключа интеграции годится любая строка вида crm:order:123:create; UUID не обязателен.
Request body
Response
Созданный черновик
Changes
No recorded changes to this operation across all 1 revision of this API.