---
title: "Сформировать складской снимок для скачивания"
method: POST
path: "/api/v1/stock/exports"
tags: ["Stock exports"]
---

# Сформировать складской снимок для скачивания

`POST /api/v1/stock/exports`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/stock/exports`
- 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

reorder_rules выгружает правила пополнения кабинета целиком,
kit_specs — действующие составы наборов тем же шаблоном, что у загрузки.
stock_report выгружает отчёт остатков по отбору экрана: он приходит
объектом report, и без него запрос отклоняется как 400. Обратное тоже
верно — report у других видов отклоняется, чтобы отбор не применился
молча к выгрузке, которая его не читает.
series_sheet выгружает «Ведомость по сериям» раздела «Партии»: строки —
товар и серия с датами выпуска и срока, колонки — места хранения,
состояния или их пары, итоги по строке и колонке. Отбор приходит
объектом series_sheet (те же параметры, что у GET /stock/batch-stock)
и обязателен для этого вида.
Остальным видам target_document_id обязателен: без него запрос
отклоняется как 400, а недоступный или несуществующий документ даёт 404.
Экспорт принадлежит создавшему субъекту и защищает текстовые значения
от исполнения как формул.

## Headers

- `X-Tenant` string, required

## Request body

- StockExportRequest
  - `kind` 'initial_stock' | 'inventory_count' | 'document_items' | 'reorder_rules' | 'stock_report' | 'kit_specs' | 'series_sheet', required: Вид складской выгрузки. Шире вида загрузки: отчёт остатков выгружается, но не загружается — читателя такого файла нет вовсе, и вид в общем перечне открыл бы себе путь загрузки.
  - `format` 'xlsx' | 'xls' | 'ods' | 'csv' | 'tsv'
  - `target_document_id` string, uuid
  - `report` StockReportExportRequest: Отбор экрана остатков и его видимые колонки. Имена полей повторяют параметры GET /api/v1/stock/report/stocks: файл обязан содержать то же, что видел человек, и одно имя на два входа защищает от расхождения. Отличается только перенос: список складов идёт массивом, а не строкой через запятую, и дополнительные поля — объектом вместо параметров cf.*. Колонки берутся из перечня; неизвестная колонка — 400, а не молча пропущенная. Опознавательные колонки (бизнес, юрлицо, склад и зона с кодами, товар, SKU, единица) пишутся всегда, и порядок колонок в файле повторяет экран. Выборка обходится постранично целиком; слишком широкая отклоняется как 400 — книга собирается в памяти, и потолок общий с загрузкой. Сводная клетка (column_axis warehouse или company, режим matrix) не выгружается — 400: файл плоский, а те же ячейки строками дают формы warehouse_company и company.
    - `mode` 'products' | 'warehouses' | 'companies'
    - `row_axis` 'product' | 'warehouse' | 'company' | 'warehouse_company'
    - `column_axis` 'metrics' | 'warehouse' | 'company'
    - `q` string
    - `as_of` string, date
    - `business_id` string, uuid
    - `company_id` string, uuid
    - `warehouse_id` string, uuid
    - `warehouse_ids` UUID[]
    - `product_id` string, uuid
    - `custom_fields` object
    - `without_company` boolean
    - `rollup_zones` boolean
    - `below_minimum` boolean
    - `with_reserve` boolean
    - `include_empty` boolean
    - `sort` 'name' | 'on_hand' | 'physical_on_hand' | 'blocked' | 'unavailable' | 'in_transit' | 'reserved' | 'available' | 'expected' | 'forecast' | 'minimum' | 'suggested' | 'unit_cost' | 'amount'
    - `direction` 'asc' | 'desc'
    - `columns` string[]
  - `series_sheet` StockSeriesSheetExportRequest: Отбор и вид «Ведомости по сериям» (ERP-2423). Имена отборов — как у GET /stock/batch-stock.
    - `search` string: Товар, артикул, штрихкод или серия
    - `as_of` string, date: Остаток на дату; пусто — сегодня
    - `business_id` string, uuid
    - `company_id` string, uuid
    - `product_id` string, uuid
    - `warehouse_ids` UUID[]: Места хранения; зоны склада входят в него
    - `condition_id` string: Пусто — все состояния, main — «Основное», иначе id состояния
    - `columns` 'warehouse' | 'condition' | 'warehouse_condition': Колонки ведомости: места хранения, состояния или их пары
    - `value` 'qty' | 'amount': Количество или себестоимость в ячейках

## Response `201`

Готовый экспорт

- StockExport
  - `id` string, uuid, required
  - `kind` 'initial_stock' | 'inventory_count' | 'document_items' | 'reorder_rules' | 'stock_report' | 'kit_specs' | 'series_sheet', required: Вид складской выгрузки. Шире вида загрузки: отчёт остатков выгружается, но не загружается — читателя такого файла нет вовсе, и вид в общем перечне открыл бы себе путь загрузки.
  - `format` 'xlsx' | 'xls' | 'ods' | 'csv' | 'tsv', required
  - `target_document_id` string, uuid
  - `file_name` string, required
  - `size` integer, required
  - `row_count` integer, required
  - `created_by` integer
  - `created_at` string, date-time, required

## Other responses

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

---

[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)
