Быстрый склад API
HTTP API для первого работающего среза складского учёта. Это описание отражает реализованные маршруты; полный продуктовый план находится в соседнем репозитории prompts.
Как получить доступ
Войдите в приложение, откройте Настройки → API-токены и создайте токен для интеграции. Скопируйте его сразу: секрет показывается только при выпуске. Вызовы API передают Authorization: Bearer <токен>. Токен можно отозвать в настройках. Эта спецификация описывает маршруты интеграции с Bearer; вход пользователя и управление токенами остаются в сессионном API приложения.
Документация на отдельном порту отправляет запросы через прокси к API и не использует сессию приложения. Введите токен в поле сверху, выберите метод и нажмите Выполнить. Токен хранится только в памяти открытой страницы.
Запись данных
Для команд требуется заголовок Idempotency-Key длиной от 8 до 120 символов. Повтор той же команды с тем же ключом возвращает прежний ответ; другая команда с таким ключом отклоняется. В примерах замените replace-with-unique-key своим уникальным значением. Просмотрщик создаёт новый ключ, который можно изменить перед запросом.
Суммы передаются числом в основных денежных единицах с точностью до двух знаков. Заменяйте replace-with-id идентификаторами связанных сущностей из ответов API. Пустой склад не содержит демонстрационных товаров или документов.
Машиночитаемая спецификация
Актуальный контракт доступен по /openapi.json. Его можно импортировать в любой клиент OpenAPI 3.1. Справочник ниже автоматически собран из этого контракта; примеры запросов строятся из схем полей.
Как устроены складские данные
Фильтры и товары
Фильтр и его значения — самостоятельные записи компании. Они сохраняются, даже если ими не пользуется ни один товар. Товар может ссылаться на значения через filterValueIds; назначение фильтра не создаёт отдельную складскую позицию. Для набора фильтров каталог принимает повторяющийся параметр valueId.
Товар имеет основной тип цены и может иметь дополнительные цены в prices. Отсутствующая цена выбранного типа остаётся отсутствующей: API не подставляет другую автоматически.
Комплекты
Комплект создаётся как товар с kind: "bundle" и непустым components. Компонентами пока могут быть только действующие обычные товары. Комплект не имеет собственных партий; доступное количество считается по его компонентам на выбранном складе. Заказ сохраняет снимок состава, поэтому дальнейшее изменение карточки не меняет старый заказ.
Склады
Название, краткое название, город и адрес склада меняются через PATCH /api/v1/warehouses/{warehouseId}. archived: true убирает склад из новых операций, сохраняя историю. Перед архивированием нужно вывести остаток и завершить открытые заказы. Пустой склад без ссылок можно удалить через DELETE; последний действующий склад удалить или архивировать нельзя.
Заказы и остатки
Перед закупкой создайте поставщика и товар; перед заказом покупателя — покупателя и достаточный доступный остаток. В partners/resolve для поиска или создания контрагента нужен телефон или email. Поле customer или supplier содержит сохранённое имя контрагента. Заказ покупателя резервирует доступное количество, но не уменьшает физический остаток. Подтверждённая отгрузка списывает партии. Приёмка увеличивает остаток только на годное количество; брак и недостача хранятся отдельно. Списание и перемещение расходуют партии по FIFO либо по явно выбранной партии. История операций сохраняется в аудите.
Загруженные закупочные документы
Файл можно отклонить через DELETE /api/v1/procurement/imports/{importId} с JSON {} и Idempotency-Key, пока из него не создан закупочный документ. Файл исчезает из очереди, его распознавание отменяется, отказ записывается в аудит. Остатки и закупки не меняются. Исходные байты остаются в общем хранилище: тот же файл может использоваться другими вложениями. При необходимости его можно загрузить заново с новым ключом. Если черновик уже создан, API возвращает 409 ALREADY_IMPORTED; отмена закупки выполняется через сам документ.
Для файлов в очереди или обработке GET /api/v1/procurement/imports возвращает recognition: фактическое прошедшее время elapsedSeconds, место в очереди queuePosition, число замеров sampleCount и приблизительное время до готовности estimatedRemainingSeconds. Оценка использует среднюю длительность последних десяти успешных распознаваний этой компании текущей моделью и учитывает файлы перед текущим. До первого успешного замера оценка равна null. Если текущий или предшествующий файл обрабатывается дольше среднего времени, estimateExceeded становится true, а оценка — null. Фактические начало и длительность обработки сохраняются в extraction.recognition; ошибки подключения и старые импорты без замеров не используются как образцы скорости.
Перенос данных из МойСклада
Откройте Настройки → Импорт из МойСклада в приложении. Введите токен с правами чтения, проверьте подключение, выберите данные и подготовьте предварительный отчёт. Склад на этом этапе не меняется. Просмотрите ошибки/замечания, подтвердите состав и нажмите «Перенести». Можно приостановить или продолжить задачу; после закрытия страницы сервер продолжает работу. Отмена останавливает дальнейшую запись, сохраняя уже перенесённые сущности. Повторный импорт узнаёт их по ID МойСклада и сохраняет локальные изменения.
Поддерживаются товары/услуги/модификации/комплекты, цены и простые дополнительные поля, контрагенты с контактами/счетами, склады и организации. Закупки переносятся черновиками: историческое проведение, остатки, резервы, оплаты, договоры и связи документов автоматически не переносятся. Чтобы номера разных типов не конфликтовали, добавляются префиксы МС-ЗП-, МС-СЧ-, МС-ПР-. Исходный номер, сложные дополнительные сведения и ссылки на фото/вложения сохраняются в JSON-отчёте. Цены поддерживаются в рублях; неизвестная валюта не считается рублём.
Сервер отправляет запросы последовательно с интервалом минимум 5,1 секунды, включая проверку соединения и повторные попытки. Это не более двух запросов за любое окно десять секунд внутри нашей системы. Ожидание, указанное МойСкладом при ограничении скорости, увеличивает паузу. Запросы иных приложений с тем же токеном находятся вне этого ограничителя.
Управление импортом требует сессии владельца. API-токен Быстрого склада для этих маршрутов не подходит; интерактивная документация направляет в приложение. Токен МойСклада хранится зашифрованным и никогда не появляется в ответах. Пока миграция 015 не применена, вкладка сообщает об ожидающем обновлении базы.
Справочник методов
Цены
POST /api/v1/price-types
Создать тип цены
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.city— string.
Тело запроса, полученное из схемы:
{
"name": "Название"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/price-types' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название"}'
PATCH /api/v1/price-types/{priceTypeId}
Изменить тип цены
Параметры:
priceTypeId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.city— string.archived— boolean, обязательно.
Тело запроса, полученное из схемы:
{
"name": "Название",
"archived": false
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/price-types/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название","archived":false}'
Типы цен
DELETE /api/v1/price-types/{priceTypeId}
Удалить тип цены и его цены товаров
Параметры:
priceTypeId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/price-types/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
Фильтры
POST /api/v1/filters
Создать фильтр
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.
Тело запроса, полученное из схемы:
{
"name": "Название"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/filters' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название"}'
PATCH /api/v1/filters/{filterId}
Изменить фильтр
Параметры:
filterId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.archived— boolean, обязательно.
Тело запроса, полученное из схемы:
{
"name": "Название",
"archived": false
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/filters/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название","archived":false}'
DELETE /api/v1/filters/{filterId}
Удалить фильтр, значения и привязки к товарам
Параметры:
filterId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/filters/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
POST /api/v1/filters/{filterId}/values
Добавить значение
Параметры:
filterId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.
Тело запроса, полученное из схемы:
{
"name": "Название"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/filters/replace-with-id/values' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название"}'
PATCH /api/v1/filters/{filterId}/values/{valueId}
Изменить значение
Параметры:
filterId— path, обязательно.valueId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.archived— boolean, обязательно.
Тело запроса, полученное из схемы:
{
"name": "Название",
"archived": false
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/filters/replace-with-id/values/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название","archived":false}'
DELETE /api/v1/filters/{filterId}/values/{valueId}
Удалить значение и его привязки к товарам
Параметры:
filterId— path, обязательно.valueId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/filters/replace-with-id/values/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
Товары
POST /api/v1/products
Создать товар или комплект
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
sku— string.name— string, обязательно.category— string.description— string.price— number,null.cost— number,null.minStock— number,null.code— string.externalCode— string.uom— string.country— string.weightKg— number,null.volumeM3— number,null.vatRate— number,null.minPrice— number,null.preferredSupplierId— string,null.parentProductId— string,null.barcodes— array.packages— array.analogIds— array.customValues— object.tags— array.kind— string; product / bundle / service / variant.components— array.filterValueIds— array.prices— array.
Тело запроса, полученное из схемы:
{
"name": "Товар"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/products' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Товар"}'
PATCH /api/v1/products/{productId}
Изменить товар или комплект
Параметры:
productId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
sku— string.name— string, обязательно.category— string.description— string.price— number,null.cost— number,null.minStock— number,null.code— string.externalCode— string.uom— string.country— string.weightKg— number,null.volumeM3— number,null.vatRate— number,null.minPrice— number,null.preferredSupplierId— string,null.parentProductId— string,null.barcodes— array.packages— array.analogIds— array.customValues— object.tags— array.kind— string; product / bundle / service / variant.components— array.filterValueIds— array.prices— array.archived— boolean.
Тело запроса, полученное из схемы:
{
"name": "Товар"
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/products/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Товар"}'
DELETE /api/v1/products/{productId}
Удалить товар без операций и связей
Параметры:
productId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/products/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
DELETE /api/v1/products/{productId}/images/{imageId}
Удалить фотографию
Параметры:
productId— path, обязательно.imageId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/products/replace-with-id/images/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
GET /api/v1/catalog
Каталог с фильтрами и типом цены
Параметры:
valueId— query; Несколько ID через повторяющийся параметр.priceTypeId— query.
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18576/api/v1/catalog' \
-H 'Authorization: Bearer <API_TOKEN>'
GET /api/v1/images/{imageId}
Получить оригинал фотографии
Параметры:
imageId— path, обязательно.
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18576/api/v1/images/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>'
POST /api/v1/products/{productId}/images
Загрузить фотографию
Параметры:
productId— path, обязательно.Idempotency-Key— header, обязательно.
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/products/replace-with-id/images' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: image/jpeg' \
--data-binary @image.jpg
Контрагенты
POST /api/v1/partners
Создать контрагента
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.type— string; Поставщик / Покупатель.roles— array.contact— string.phone— string.email— string.legalKind— string.fullName— string.inn— string.kpp— string.ogrn— string.legalAddress— string.actualAddress— string.contacts— array.bankAccounts— array.groups— array.note— string.priceTypeId— string.discountPercent— number.customValues— object.
Тело запроса, полученное из схемы:
{
"name": "Название"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/partners' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название"}'
PATCH /api/v1/partners/{partnerId}
Изменить контрагента
Параметры:
partnerId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string.roles— array.contact— string.phone— string.email— string.legalKind— string.fullName— string.inn— string.kpp— string.ogrn— string.legalAddress— string.actualAddress— string.contacts— array.bankAccounts— array.groups— array.note— string.priceTypeId— string.discountPercent— number.archived— boolean.customValues— object.
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/partners/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
DELETE /api/v1/partners/{partnerId}
Удалить контрагента без связей
Параметры:
partnerId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/partners/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
POST /api/v1/partners/resolve
Найти или создать контрагента
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.type— string, обязательно; Поставщик / Покупатель.phone— string.email— string.
Тело запроса, полученное из схемы:
{
"name": "Контрагент",
"type": "Поставщик",
"phone": "+70000000000"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/partners/resolve' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Контрагент","type":"Поставщик","phone":"+70000000000"}'
Организации
POST /api/v1/organizations
Создать собственное юридическое лицо
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.legalKind— string.fullName— string.inn— string.kpp— string.ogrn— string.legalAddress— string.actualAddress— string.bankAccounts— array.
Тело запроса, полученное из схемы:
{
"name": "Название"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/organizations' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название"}'
PATCH /api/v1/organizations/{organizationId}
Изменить собственное юридическое лицо
Параметры:
organizationId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string.legalKind— string.fullName— string.inn— string.kpp— string.ogrn— string.legalAddress— string.actualAddress— string.bankAccounts— array.archived— boolean.
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/organizations/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
DELETE /api/v1/organizations/{organizationId}
Удалить организацию без связей
Параметры:
organizationId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/organizations/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
Договоры
POST /api/v1/contracts
Создать договор
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
partnerId— string, обязательно.organizationId— string, обязательно.kind— string, обязательно; purchase / sale / commission.number— string.signedAt— string.commissionPercent— number.note— string.
Тело запроса, полученное из схемы:
{
"partnerId": "replace-with-id",
"organizationId": "replace-with-id",
"kind": "purchase"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/contracts' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"partnerId":"replace-with-id","organizationId":"replace-with-id","kind":"purchase"}'
PATCH /api/v1/contracts/{contractId}
Изменить договор
Параметры:
contractId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
partnerId— string.organizationId— string.kind— string; purchase / sale / commission.number— string.signedAt— string.commissionPercent— number.note— string.archived— boolean.
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/contracts/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
DELETE /api/v1/contracts/{contractId}
Удалить договор без связей
Параметры:
contractId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/contracts/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
Дополнительные поля
POST /api/v1/custom-fields
Создать определение поля
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
entityKind— string, обязательно.name— string, обязательно.valueType— string, обязательно; string / number / date / boolean / select.options— array.
Тело запроса, полученное из схемы:
{
"entityKind": "product",
"name": "Название",
"valueType": "string"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/custom-fields' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"entityKind":"product","name":"Название","valueType":"string"}'
PATCH /api/v1/custom-fields/{fieldId}
Изменить определение поля
Параметры:
fieldId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string.options— array.archived— boolean.
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/custom-fields/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
DELETE /api/v1/custom-fields/{fieldId}
Удалить поле без сохранённых значений
Параметры:
fieldId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/custom-fields/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
Интеграции
POST /api/v1/external-links
Связать внешний ID
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
source— string, обязательно.entityType— string, обязательно; product / partner / order.externalId— string, обязательно.internalId— string, обязательно.
Тело запроса, полученное из схемы:
{
"source": "shop",
"entityType": "product",
"externalId": "external-123",
"internalId": "replace-with-id"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/external-links' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"source":"shop","entityType":"product","externalId":"external-123","internalId":"replace-with-id"}'
GET /api/v1/external-links
Найти связь по внешнему ID
Параметры:
source— query, обязательно.entityType— query, обязательно.externalId— query, обязательно.
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18576/api/v1/external-links?source=shop&entityType=product&externalId=external-123' \
-H 'Authorization: Bearer <API_TOKEN>'
GET /api/v1/integrations/moysklad
Подключение и история импорта МойСклада (сессия владельца)
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18574/api/v1/integrations/moysklad' \
--cookie 'bs_session=<SESSION_COOKIE>'
POST /api/v1/integrations/moysklad/connection
Проверить и сохранить шифрованный токен МойСклада
Параметры:
Idempotency-Key— header, обязательно.
Поля JSON:
token— string, обязательно.
Тело запроса, полученное из схемы:
{
"token": "<MOYSKLAD_TOKEN>"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18574/api/v1/integrations/moysklad/connection' \
--cookie 'bs_session=<SESSION_COOKIE>' \
-H 'Origin: http://127.0.0.1:18573' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"token":"<MOYSKLAD_TOKEN>"}'
DELETE /api/v1/integrations/moysklad/connection
Отключить МойСклад после завершения задач
Параметры:
Idempotency-Key— header, обязательно.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18574/api/v1/integrations/moysklad/connection' \
--cookie 'bs_session=<SESSION_COOKIE>' \
-H 'Origin: http://127.0.0.1:18573' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
POST /api/v1/integrations/moysklad/jobs
Подготовить возобновляемый предварительный отчёт; склад не изменяется
Параметры:
Idempotency-Key— header, обязательно.
Поля JSON:
products— boolean, обязательно.partners— boolean, обязательно.warehouses— boolean, обязательно.organizations— boolean, обязательно.purchases— boolean, обязательно.
Тело запроса, полученное из схемы:
{
"products": true,
"partners": true,
"warehouses": true,
"organizations": true,
"purchases": false
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18574/api/v1/integrations/moysklad/jobs' \
--cookie 'bs_session=<SESSION_COOKIE>' \
-H 'Origin: http://127.0.0.1:18573' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"products":true,"partners":true,"warehouses":true,"organizations":true,"purchases":false}'
POST /api/v1/integrations/moysklad/jobs/{jobId}/pause
Приостановить импорт
Параметры:
jobId— path, обязательно.Idempotency-Key— header, обязательно.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18574/api/v1/integrations/moysklad/jobs/replace-with-id/pause' \
--cookie 'bs_session=<SESSION_COOKIE>' \
-H 'Origin: http://127.0.0.1:18573' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
POST /api/v1/integrations/moysklad/jobs/{jobId}/resume
Продолжить с checkpoint
Параметры:
jobId— path, обязательно.Idempotency-Key— header, обязательно.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18574/api/v1/integrations/moysklad/jobs/replace-with-id/resume' \
--cookie 'bs_session=<SESSION_COOKIE>' \
-H 'Origin: http://127.0.0.1:18573' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
POST /api/v1/integrations/moysklad/jobs/{jobId}/cancel
Отменить дальнейший перенос; созданные данные сохраняются
Параметры:
jobId— path, обязательно.Idempotency-Key— header, обязательно.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18574/api/v1/integrations/moysklad/jobs/replace-with-id/cancel' \
--cookie 'bs_session=<SESSION_COOKIE>' \
-H 'Origin: http://127.0.0.1:18573' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
POST /api/v1/integrations/moysklad/jobs/{jobId}/apply
Начать запись после готового preview; закупки только черновиками
Параметры:
jobId— path, обязательно.Idempotency-Key— header, обязательно.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18574/api/v1/integrations/moysklad/jobs/replace-with-id/apply' \
--cookie 'bs_session=<SESSION_COOKIE>' \
-H 'Origin: http://127.0.0.1:18573' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
GET /api/v1/integrations/moysklad/jobs/{jobId}/rows
Страница отчёта; source=true включает сохранённый исходный снимок
Параметры:
jobId— path, обязательно.offset— query.limit— query.problems— query.source— query.
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18574/api/v1/integrations/moysklad/jobs/replace-with-id/rows' \
--cookie 'bs_session=<SESSION_COOKIE>'
Склады
POST /api/v1/warehouses
Создать склад
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string, обязательно.short— string.city— string.address— string.
Тело запроса, полученное из схемы:
{
"name": "Название"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/warehouses' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Название"}'
PATCH /api/v1/warehouses/{warehouseId}
Изменить или архивировать склад
Параметры:
warehouseId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
name— string.short— string.city— string.address— string.archived— boolean.
Тело запроса, полученное из схемы:
{
"name": "Новое название склада"
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/warehouses/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"name":"Новое название склада"}'
DELETE /api/v1/warehouses/{warehouseId}
Удалить пустой склад
Параметры:
warehouseId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/warehouses/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
Закупки
POST /api/v1/purchases
Создать заказ поставщику
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
productId— string, обязательно.warehouseId— string, обязательно.supplier— string, обязательно.quantity— number, обязательно.unitCost— number, обязательно.externalSource— string.externalId— string.
Тело запроса, полученное из схемы:
{
"productId": "replace-with-id",
"warehouseId": "replace-with-id",
"supplier": "Поставщик",
"quantity": 1,
"unitCost": 800
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/purchases' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"productId":"replace-with-id","warehouseId":"replace-with-id","supplier":"Поставщик","quantity":1,"unitCost":800}'
DELETE /api/v1/purchases/{purchaseId}
Удалить закупку без приёмки
Параметры:
purchaseId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/purchases/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
POST /api/v1/procurement/documents
Создать многострочный документ
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
kind— string, обязательно; purchase_order / supplier_invoice / receipt / supplier_return / internal_order.reference— string,null.supplierId— string,null.organizationId— string,null.contractId— string,null.warehouseId— string,null.sourceDocumentId— string,null.issuedAt— string,null.dueAt— string,null.note— string.customValues— object.lines— array, обязательно.
Тело запроса, полученное из схемы:
{
"kind": "purchase_order",
"lines": [
{
"productId": "replace-with-id",
"quantity": 1,
"unitCost": 800
}
]
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/procurement/documents' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"kind":"purchase_order","lines":[{"productId":"replace-with-id","quantity":1,"unitCost":800}]}'
PATCH /api/v1/procurement/documents/{documentId}
Изменить черновик
Параметры:
documentId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
kind— string; purchase_order / supplier_invoice / receipt / supplier_return / internal_order.reference— string,null.supplierId— string,null.organizationId— string,null.contractId— string,null.warehouseId— string,null.sourceDocumentId— string,null.issuedAt— string,null.dueAt— string,null.note— string.customValues— object.lines— array.
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/procurement/documents/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
DELETE /api/v1/procurement/documents/{documentId}
Удалить непроведённый документ без зависимых документов
Параметры:
documentId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/procurement/documents/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
PATCH /api/v1/procurement/documents/{documentId}/status
Провести, закрыть или отменить документ
Параметры:
documentId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
status— string, обязательно; posted / closed / cancelled.
Тело запроса, полученное из схемы:
{
"status": "posted"
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/procurement/documents/replace-with-id/status' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"status":"posted"}'
POST /api/v1/procurement/imports/{importId}/recognize
Повторить локальное распознавание файла
Параметры:
importId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/procurement/imports/replace-with-id/recognize' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
DELETE /api/v1/procurement/imports/{importId}
Отклонить загруженный файл без созданного документа
Параметры:
importId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/procurement/imports/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
POST /api/v1/procurement/imports/{importId}/document
Создать черновик из распознанного файла
Параметры:
importId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
kind— string, обязательно; purchase_order / supplier_invoice / receipt / supplier_return / internal_order.reference— string,null.supplierId— string,null.organizationId— string,null.contractId— string,null.warehouseId— string,null.sourceDocumentId— string,null.issuedAt— string,null.dueAt— string,null.note— string.customValues— object.lines— array, обязательно.
Тело запроса, полученное из схемы:
{
"kind": "purchase_order",
"lines": [
{
"productId": "replace-with-id",
"quantity": 1,
"unitCost": 800
}
]
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/procurement/imports/replace-with-id/document' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"kind":"purchase_order","lines":[{"productId":"replace-with-id","quantity":1,"unitCost":800}]}'
POST /api/v1/procurement/payments
Создать платёж
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
partnerId— string, обязательно.reference— string,null.direction— string, обязательно; outgoing / incoming.method— string, обязательно; bank / cash.amount— number, обязательно.organizationId— string,null.contractId— string,null.documentId— string,null.paidAt— string,null.note— string.
Тело запроса, полученное из схемы:
{
"partnerId": "replace-with-id",
"direction": "outgoing",
"method": "bank",
"amount": 800
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/procurement/payments' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"partnerId":"replace-with-id","direction":"outgoing","method":"bank","amount":800}'
PATCH /api/v1/procurement/payments/{paymentId}
Изменить черновик платежа
Параметры:
paymentId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
partnerId— string.reference— string,null.direction— string; outgoing / incoming.method— string; bank / cash.amount— number.organizationId— string,null.contractId— string,null.documentId— string,null.paidAt— string,null.note— string.
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/procurement/payments/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
DELETE /api/v1/procurement/payments/{paymentId}
Удалить непроведённый платёж
Параметры:
paymentId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/procurement/payments/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
PATCH /api/v1/procurement/payments/{paymentId}/status
Провести или отменить платёж
Параметры:
paymentId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
status— string, обязательно; posted / cancelled.
Тело запроса, полученное из схемы:
{
"status": "posted"
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/procurement/payments/replace-with-id/status' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"status":"posted"}'
GET /api/v1/procurement/imports
Список загруженных закупочных файлов
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18576/api/v1/procurement/imports' \
-H 'Authorization: Bearer <API_TOKEN>'
POST /api/v1/procurement/imports
Загрузить файл закупки для локального распознавания
Параметры:
Idempotency-Key— header, обязательно.X-File-Name— header.
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/procurement/imports' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: image/jpeg' \
--data-binary @image.jpg
GET /api/v1/procurement/imports/{importId}/file
Оригинал закупочного файла
Параметры:
importId— path, обязательно.
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18576/api/v1/procurement/imports/replace-with-id/file' \
-H 'Authorization: Bearer <API_TOKEN>'
Продажи
POST /api/v1/orders
Создать заказ покупателя
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
customer— string, обязательно.warehouseId— string, обязательно.channel— string, обязательно.items— array, обязательно.priceTypeId— string.externalNumber— string.deliveryAddress— string.note— string.orderedAt— string.externalSource— string.externalId— string.
Тело запроса, полученное из схемы:
{
"customer": "Покупатель",
"warehouseId": "replace-with-id",
"channel": "Сайт",
"items": [
{
"productId": "replace-with-id",
"quantity": 1
}
]
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/orders' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"customer":"Покупатель","warehouseId":"replace-with-id","channel":"Сайт","items":[{"productId":"replace-with-id","quantity":1}]}'
PATCH /api/v1/orders/{orderId}/status
Сменить статус заказа
Параметры:
orderId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
status— string, обязательно; picking / shipped / cancelled.
Тело запроса, полученное из схемы:
{
"status": "picking"
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/orders/replace-with-id/status' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"status":"picking"}'
DELETE /api/v1/orders/{orderId}
Удалить неотгруженный заказ и снять резерв
Параметры:
orderId— path, обязательно.Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
Тело запроса, полученное из схемы:
{}
Запрос curl, полученный из спецификации:
curl -X DELETE 'http://127.0.0.1:18576/api/v1/orders/replace-with-id' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{}'
Остатки
POST /api/v1/stock/receipt
Принять товар
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
productId— string, обязательно.warehouseId— string, обязательно.supplier— string, обязательно.quantity— number, обязательно.damaged— number.missing— number.unitCost— number, обязательно.purchaseId— string.
Тело запроса, полученное из схемы:
{
"productId": "replace-with-id",
"warehouseId": "replace-with-id",
"supplier": "Поставщик",
"quantity": 1,
"unitCost": 800
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/stock/receipt' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"productId":"replace-with-id","warehouseId":"replace-with-id","supplier":"Поставщик","quantity":1,"unitCost":800}'
POST /api/v1/stock/writeoff
Списать товар
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
productId— string, обязательно.warehouseId— string, обязательно.quantity— number, обязательно.reason— string, обязательно.selectedLotId— string.
Тело запроса, полученное из схемы:
{
"productId": "replace-with-id",
"warehouseId": "replace-with-id",
"quantity": 1,
"reason": "Причина"
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/stock/writeoff' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"productId":"replace-with-id","warehouseId":"replace-with-id","quantity":1,"reason":"Причина"}'
POST /api/v1/stock/transfer
Переместить товар
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
productId— string, обязательно.warehouseId— string, обязательно.toWarehouseId— string, обязательно.quantity— number, обязательно.selectedLotId— string.
Тело запроса, полученное из схемы:
{
"productId": "replace-with-id",
"warehouseId": "replace-with-id",
"toWarehouseId": "replace-with-id",
"quantity": 1
}
Запрос curl, полученный из спецификации:
curl -X POST 'http://127.0.0.1:18576/api/v1/stock/transfer' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"productId":"replace-with-id","warehouseId":"replace-with-id","toWarehouseId":"replace-with-id","quantity":1}'
Настройки
PATCH /api/v1/settings
Изменить настройки компании
Параметры:
Idempotency-Key— header, обязательно; Уникальный ключ команды (8–120 символов). Повтор с тем же ключом возвращает прежний ответ.
Поля JSON:
companyName— string, обязательно.lowStockAlerts— boolean, обязательно.dailySummary— boolean, обязательно.
Тело запроса, полученное из схемы:
{
"companyName": "Название",
"lowStockAlerts": true,
"dailySummary": true
}
Запрос curl, полученный из спецификации:
curl -X PATCH 'http://127.0.0.1:18576/api/v1/settings' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Idempotency-Key: replace-with-unique-key' \
-H 'Content-Type: application/json' \
--data '{"companyName":"Название","lowStockAlerts":true,"dailySummary":true}'
Состояние
GET /api/v1/bootstrap
Состояние склада
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18576/api/v1/bootstrap' \
-H 'Authorization: Bearer <API_TOKEN>'
Аудит
GET /api/v1/audit
Журнал аудита
Параметры:
limit— query.
Запрос curl, полученный из спецификации:
curl -X GET 'http://127.0.0.1:18576/api/v1/audit' \
-H 'Authorization: Bearer <API_TOKEN>'