---
title: "Завести карточки бумаг входящего пакета"
method: POST
path: "/api/v1/docflow/messages/{id}/papers"
tags: ["Docflow intake"]
---

# Завести карточки бумаг входящего пакета

`POST /api/v1/docflow/messages/{id}/papers`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/docflow/messages/{id}/papers`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)

«Принять бумаги пакета» (ERP-2063): по решению человека каждый файл пакета получает СВОЮ карточку документооборота. Допсоглашение встаёт под договор связью amends, спецификация — связью attachment; договор называют заведённой карточкой (parent_card) или файлом-договором этого же пакета (parent_attachment) — договоры пакета заводятся первыми, поэтому ДС того же пакета встаёт под только что заведённый договор. Назначение ДС задаёт purpose: terms меняет условия договора, deal оформляет отдельную покупку или продажу и ведёт себя как спецификация; не прислано — предложенное разбором. Счёт получает сумму и строки из своего PDF, номенклатура строк — из прошлых закупок того же поставщика. Счёт, акт, УПД и накладную можно сразу положить в закупку поставщика (order) связью basis — в том числе бумагу, карточка которой уже заведена: так её разносят позже. Файл с видом skip карточки не получает. Файл, у которого карточка уже есть, второй раз не заводится: повтор команды безопасен. Проводок нет, наружу не уходит ничего, поэтому право docflow.edo:write, как у приёмки. Ответ — разбор пакета заново.

Отказы 400 с кодом и фразой: docflow.papers.empty (не выбрано ни одного файла), docflow.papers.attachment (файла нет в пакете или он назван дважды), docflow.papers.kind (вид не из перечня), docflow.papers.parent (у ДС или спецификации назван не один договор, файл назван договором самому себе или parent_attachment указывает на файл, не отмеченный как договор), docflow.papers.order (в закупку кладут только счёт, акт, УПД и накладную; закупка другого юрлица или поставщика либо это продажа), docflow.papers.purpose (у допсоглашения назначение не terms и не deal). Отказ 422 docflow.formats.invalid с проверкой docflow.edo.counterparty_required — контрагент не сведён зеркалом и не назван полем contact_id. Отказы карточки — кодами docflow.flow.*, 503 docflow.flow.unavailable — карточки документооборота на сервере не включены.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant` string, required

## Request body

- DocflowPackagePapersInput: Команда «Принять бумаги пакета». У ДС и спецификации назван не более чем один договор — parent_card или parent_attachment; у прочих видов договор не передаётся и игнорируется: счёт кладут в закупку, а не в договор.
  - `papers` DocflowPackagePaperInput[], required: Бумаги пакета: решение по каждому принимаемому файлу, один файл — один раз
    - `attachment` string, uuid, required
    - `kind` 'contract' | 'amendment' | 'specification' | 'invoice' | 'act' | 'upd' | 'goods_waybill' | 'reconciliation_act' | 'power_of_attorney' | 'other' | 'skip', required: Что человек назначает файлу пакета: договор, допсоглашение, спецификация, счёт, акт, УПД, товарная накладная, акт сверки, доверенность, прочее; skip — файл не бумага сделки (сопроводительное письмо, копия уже заведённого) и карточки не получает.
    - `parent_card` string, uuid
    - `parent_attachment` string, uuid
    - `purpose` 'terms' | 'deal': Назначение допсоглашения: terms — меняет условия договора, deal — отдельная покупка или продажа по договору. Только у вида amendment, у прочих игнорируется; не прислано — предложенное разбором
    - `order` string, uuid
  - `contact_id` string, uuid

## Response `200`

Пакет по файлам после заведения: у принятых файлов заполнено card

- DocflowPackagePapers: Входящий пакет, разобранный по файлам (ERP-2063): каждый файл — своя бумага со своей карточкой.
  - `message` string, uuid, required
  - `papers` DocflowPackagePaper[], required
    - `attachment` string, uuid, required
    - `name` string, required: Имя файла словами оператора
    - `kind` string, required: Вид уже заведённой карточки, иначе предложенный разбором. Пустая строка — разбор не понял, вид выбирает человек. У файла с карточкой — любой вид документооборота, у остальных — из перечня DocflowPackagePaperKind.
    - `kind_source` '' | 'text' | 'name' | 'operator' | 'card', required: Откуда взят вид: text — по тексту первой страницы, name — по имени файла, operator — по слову оператора (только у пакета из одного файла), card — у файла уже есть карточка; пусто — вид не определён
    - `number` string: Номер бумаги, прочитанный из файла
    - `date` string: Дата бумаги в форме ГГГГ-ММ-ДД, прочитанная из файла
    - `amount` string: Сумма строкой, как в бумаге: через число с плавающей точкой теряются копейки
    - `currency` string: Валюта, если бумага её назвала; пусто — не сказано
    - `base_number` string: Номер договора, который бумага назвала основанием: «к договору 332/26» у ДС, «Основание: Договор № 332/26» у счёта
    - `base_date` string: Дата договора-основания, если бумага её назвала
    - `parent` DocflowPackagePaperParent: Договор, под которым стоит бумага: уже заведённая карточка (card) или файл-договор этого же пакета (attachment), которому карточку заведёт та же команда. Назван ровно один из двух.
      - `card` string, uuid
      - `attachment` string, uuid
      - `title` string: Название договора для показа человеку: заголовок карточки или имя файла
    - `card` DocflowMessageFlowLink: Карточка документооборота в пакете — обратная сторона связи edo_links карточки. Пакет доказывает отправку и подпись, а содержание живёт в карточке; здесь видно, чьё содержание он вёз и чем карточка ему приходится.
      - `id` string, uuid, required
      - `document` string, uuid, required
      - `role` 'primary' | 'attachment' | 'basis', required: Чем карточка приходится конверту: основной документ, приложение или основание
      - `version` integer, required: Текущая редакция карточки: открывать человеку следует её
      - `kind` 'contract' | 'specification' | 'amendment' | 'invoice' | 'act' | 'upd' | 'goods_waybill' | 'transport_waybill' | 'consignment_note' | 'transport_order' | 'tax_invoice' | 'correction' | 'return' | 'discrepancy_act' | 'reconciliation_act' | 'power_of_attorney' | 'other', required: Вид документа внутреннего контура. Вид называет бумагу, а не учётную операцию: продажу и закупку из бумаги делают отдельные команды.
      - `status` 'draft' | 'registered' | 'archived', required
      - `title` string, required
      - `number` string, required
      - `date` string, date, required
      - `created_at` string, date-time, required
      - `external_attachment_id` string: Файл пакета, по которому заведена карточка (ERP-2063): идентификатор вложения у оператора (external_id), а без него — «id:» и id вложения. У пакета «ДС + счёт» своя карточка у каждого файла. Нет у карточки на весь пакет — так заводила приёмка до разбора по файлам
    - `order` DocflowPackagePaperOrder: Закупка, в которой лежит бумага пакета.
      - `id` string, uuid, required
      - `number` string
      - `title` string
    - `purpose` 'terms' | 'deal': Назначение допсоглашения: у заведённой карточки — её, иначе предложенное по тексту. terms — меняет условия договора, deal — отдельная покупка или продажа по договору. Только у вида amendment
    - `base_deal` string: Номер допсоглашения или спецификации, названный в основании счёта: «2» из «ДС № 2»
    - `deal` DocflowPackagePaperParent: Договор, под которым стоит бумага: уже заведённая карточка (card) или файл-договор этого же пакета (attachment), которому карточку заведёт та же команда. Назван ровно один из двух.
      - `card` string, uuid
      - `attachment` string, uuid
      - `title` string: Название договора для показа человеку: заголовок карточки или имя файла
  - `contracts` DocflowPackageContract[], required: Договоры этого контрагента у юрлица пакета: из них выбирают основание ДС и договор закупки
    - `id` string, uuid, required
    - `title` string, required
    - `number` string
    - `date` string: Дата договора в форме ГГГГ-ММ-ДД
  - `purchases` DocflowIntakePurchase[], required: Открытые закупки этого поставщика у юрлица пакета: в них кладут счёт, акт, УПД и накладную полем order команды. Пусто, когда контрагент не выбран или закупок нет
    - `order_id` string, uuid, required
    - `number` string, required: Номер закупки
    - `title` string
    - `date` string: Дата закупки ГГГГ-ММ-ДД
    - `amount` string, required: Заказано
    - `remaining` string, required: Осталось исполнить: заказано минус проведённые исполнения
    - `currency` string
    - `contract_number` string: Договор закупки
    - `contract_id` string, uuid
    - `deal_paper_id` string, uuid
    - `reason` 'linked' | 'amount' | 'open', required: Почему предложена: linked — бумага уже лежит в ней; amount — остаток равен сумме бумаги; open — бумага помещается в остаток
    - `pnl_item_required` boolean: Первому акту этой закупки нужна статья расходов: у закупки её нет, а операции заказа в финансах ещё нет. Приёмка без pnl_item_id ответит 409 docflow.edo.intake_pnl_item_required
    - `suggested_pnl_item` DocflowIntakePnlItem: Подсказка статьи расходов первого акта закупки (ERP-1810), по порядку: статья закупки, статья оплаты закупки или её счёта, статья последнего акта этого поставщика, правило разнесения контрагента. Только расходная статья ОПиУ в обращении.
      - `id` string, uuid, required
      - `name` string, required: Название статьи — так, как его назвал кабинет
      - `source` 'order' | 'payment' | 'last_act' | 'rule': Откуда подсказка: order — статья закупки; payment — статья её оплаты или оплаты её счёта; last_act — статья последнего акта поставщика; rule — правило разнесения контрагента
    - `goods` boolean: В закупке товар, и склад включён (ERP-1810): строки бумаги на товар закупки «Принять к учёту» заводит черновиком приёмки склада по закупке (проводит его склад), строки на услуги — актом поставщика
    - `warehouse_id` string, uuid
    - `warehouse_name` string: Название склада приёмки
  - `contact` string, uuid
  - `pending` integer, required: Сколько файлов ещё без карточки и не отмечены skip

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Запись не найдена или не видима текущему пользователю
- `409`: Конфликт версии, идемпотентности или бизнес-состояния
- `422`: Документ не отвечает формату ФНС: не хватает реквизитов. Код `docflow.formats.invalid`, и поле `issues` несёт СПИСОК непройденных проверок целиком — код, путь реквизита именами ФНС, номер товарной строки и подробности значениями. 422, а не 400: запрос составлен верно, и чинится это заполнением карточек, а не переписыванием запроса.
- `503`: Внешний банк, справочник или контур подключений временно недоступен

---

[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/3c60ded179f2?raw)
