---
title: "Получить маршруты согласования"
method: GET
path: "/api/v1/docflow/approval-routes"
tags: ["Docflow approvals"]
---

# Получить маршруты согласования

`GET /api/v1/docflow/approval-routes`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/docflow/approval-routes`
- 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`)

Именованные шаблоны, из которых подбирается проход. Крыло настройки стоит под отдельным правом docflow.flow:configure (его покрывает и docflow.flow:admin) намеренно: заведение маршрута решает, кого будут спрашивать про ЧУЖИЕ бумаги, и выдают его адресно — не всякому, кто вправе завести документ или согласовать свой этап.

Двери маршрутов пускают и узкое право docflow.flow:configure_payments («Настраивать маршруты заявок», ERP-1566): с ним в списке только маршруты заявок на оплату и маршруты «на любой вид» (последние только для чтения), а сохранить, выключить и проверить можно лишь маршрут заявки; configure и admin узкое право покрывают.

Отборы module и kind сужают список до предметов одного вида. Значение kind=any у маршрута означает «любой вид предмета своего модуля» и принадлежит только шаблону: у прохода вид всегда конкретен.

## Query parameters

- `module` 'docflow' | 'finance' | 'stock'
- `kind` 'flow_document' | 'payment_request' | 'edo_message' | 'stock_purchase_request' | 'any'

## Headers

- `X-Tenant` string, required

## Response `200`

Маршруты согласования

- DocflowApprovalRouteList
  - `items` DocflowApprovalRoute[], required
    - `id` string, uuid, required
    - `name` string, required
    - `subject_module` 'docflow' | 'finance' | 'stock', required
    - `subject_kind` 'flow_document' | 'payment_request' | 'edo_message' | 'stock_purchase_request' | 'any', required: any — любой вид предмета своего модуля
    - `document_kind` string: Вид бумаги у владельца предмета
    - `company_id` string, uuid
    - `company_name` string
    - `contact_id` string, uuid
    - `contact_name` string
    - `contact_folder_id` string, uuid
    - `contact_folder` string
    - `item_id` string, uuid
    - `item_name` string
    - `business_id` string, uuid
    - `business_name` string
    - `department_id` string, uuid
    - `department_name` string
    - `amount_from` string: Нижняя граница суммы ВКЛЮЧАЕТСЯ
    - `amount_to` string: Верхняя граница суммы НЕ включается
    - `rework_mode` 'restart' | 'returner_only', required: Что будет после возврата на доработку: весь путь заново либо продолжает вернувший, визы остальных сохраняются
    - `payment_destination` 'calendar' | 'treasury': Для заявки на оплату (docflow / payment_request): куда идёт согласованная — сразу в платёжный календарь (дата оплаты = срок) или казначею, который ставит дату платежа (ERP-1427, этап 6)
    - `system_key` 'payment_request' | 'invoice' | 'contract': Код стандартного маршрута кабинета. Его заводит система выключенным; включённый, он подбирается последним — когда ни один другой маршрут не подошёл. Пусто — маршрут заведён кабинетом
    - `is_active` boolean, required: Выключенный маршрут не подбирается новым проходам, но остаётся на месте
    - `stages` DocflowApprovalRouteStage[], required
      - `id` string, uuid
      - `position` integer, required: Порядок этапа в маршруте
      - `title` string
      - `assignee_kind` 'user' | 'department' | 'role' | 'manager' | 'department_head', required
      - `assignee_user_id` integer
      - `assignee_department_id` string, uuid
      - `assignee_role_id` string, uuid
      - `include_subdepartments` boolean: Только для department: спросить и сотрудников подотделов
      - `assignee_label` string: Как назначение читается человеком. Подставляется на чтении; в шаблоне не хранится
      - `stage_kind` 'approve' | 'acknowledge': Что делает этап: approve — согласует и держит маршрут; acknowledge — «ознакомиться»: извещает участников (нужно право docflow.flow:read), маршрут не держит, отказа не знает (ERP-1566). Пусто — approve
      - `mode` 'all' | 'any', required: Решают все или достаточно одного. Кворума с процентом нет
      - `due_hours` integer: Срок ЭТАПА в часах. Просрочка даёт напоминание и эскалацию на одно звено; автоотклонения по сроку нет
      - `min_amount` string: Лимит по сумме УСЛОВИЕМ НА ЭТАП: выполнять только при сумме от N. Этап, чей лимит не достигнут, остаётся в проходе строкой skipped
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Запись не найдена или не видима текущему пользователю
- `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/a99574d597cc?raw)
