---
title: "Зарезервировать товар под продажу"
method: POST
path: "/api/v1/stock/sales/{id}/reservation"
tags: ["Stock purchasing"]
---

# Зарезервировать товар под продажу

`POST /api/v1/stock/sales/{id}/reservation`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/stock/sales/{id}/reservation`
- 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

«Зарезервировать» у подтверждённой продажи (ERP-2423): склад держит под неё то, что по товарным строкам ещё не отгружено, но не больше свободного остатка склада — той же службой, что резерв загруженного заказа (штатный резерв со ссылкой на продажу, срок по настройке default_reservation_days, повтор с тем же составом ничего не заводит, другой состав — прежний резерв снимается). Склад — warehouse_id, иначе склад продажи, склад её резерва или склад по умолчанию юрлица; нет ни одного — 400 stock.order.no_warehouse. Нехватка не отказ: ответ называет по строкам, сколько зарезервировано и сколько не хватило. Черновик, закрытая продажа, продажа без юрлица или без товаров — 409 stock.order.reserve_blocked.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant` string, required

## Request body

- StockOrderReserveInput
  - `warehouse_id` string, uuid

## Response `200`

Итог резерва по строкам продажи

- StockOrderReserveResult
  - `order_id` string, uuid, required
  - `warehouse_id` string, uuid, required
  - `warehouse_name` string, required
  - `source` 'chosen' | 'order' | 'reservation' | 'channel' | 'policy', required
  - `lines` StockOrderReserveLine[], required
    - `line_id` string, uuid, required
    - `product_id` string, uuid, required
    - `title` string, required
    - `unit` string
    - `needed_qty` string, required
    - `reserved_qty` string, required
    - `short_qty` string, required
  - `reserved` boolean, required
  - `short` boolean, required

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Запись не найдена или не видима текущему пользователю
- `409`: Конфликт версии, идемпотентности или бизнес-состояния

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/a99574d597cc?raw)
