Skip to main content
Здесь — полный путь от шаблона до подписанного PDF. Все шаги, кроме скачивания, требуют области documents:write; скачивание — documents:read. Один принцип важнее остальных: подпись вы формируете сами. Сервер никогда не подписывает за вас — вы присылаете готовый base64-блок CMS/ЭЦП, созданный на стороне клиента ключом владельца, а сервер его проверяет и записывает.

Порядок вызовов: от создания до подписанного PDF

1

Создать документ из шаблона

POST /documents создаёт черновик по шаблону. Инициатор проставляется сервером как сотрудник владельца ключа — подменить его нельзя.
В ответе — созданный документ со статусом DOCUMENT_STATUS_DRAFT. Поля number, date и organization_id можно передать явно; иначе они проставляются по правилам тенанта.
2

Задать маршрут

PUT /documents/{document_id}/route задаёт шаги согласования и подписания. Каждый шаг — это step_type, rule и список employee_ids.
step_typeSTEP_TYPE_APPROVAL (согласование) или STEP_TYPE_SIGNING (подписание). ruleSTEP_RULE_ALL (нужны все участники) или STEP_RULE_ANY_ONE (достаточно одного). Документ остаётся в DRAFT — маршрут ещё не запущен. У уже запущенного документа непройденные шаги правит POST /documents/{document_id}/route/_modify.
3

Отправить по маршруту

POST /documents/{document_id}/_send запускает маршрут: DRAFT переходит в ON_APPROVAL или ON_SIGN.
initial_action по умолчанию SEND_INITIAL_ACTION_SEND_ONLY — просто отправить. Значения …_APPROVE_FIRST_STEP и …_SIGN_FIRST_STEP сразу закрывают первый шаг от имени инициатора (тогда вместе с ними передаются signature и sign_method) и доступны только инициатору.
4

Найти свой participant_id

Прочитайте документ и возьмите id своего активного участника из route.steps[].participants[] — именно он передаётся в подписание и согласование.
5

Подписать

POST /documents/{document_id}/_sign записывает подпись. signature — это готовый base64-блок CMS/ЭЦП, созданный на стороне клиента (десктопный NCALayer или eGov Mobile). Сервер его проверяет и фиксирует.Что именно подписывать. CMS формируется над содержимым PDF-файла документа — того, который закреплён за маршрутом при отправке. Скачайте его через GET /documents/{document_id}/download (file_type=FILE_TYPE_PDF) и подписывайте именно эти байты. В NCALayer это метод createCMSSignatureFromBase64 с base64-содержимым PDF. Сервер сверяет подпись с дайджестами этого файла — CMS над другим содержимым будет отклонён.
sign_methodSIGN_METHOD_NCALAYER или SIGN_METHOD_EGOV_MOBILE. Когда подписан последний обязательный шаг, документ переходит в DOCUMENT_STATUS_COMPLETED.
Подпись формируется на стороне клиента ключом владельца — сервер её не создаёт. Приватный ключ и генерация CMS/ЭЦП остаются у вас; в API уезжает только готовый base64-блок. Не отправляйте приватный ключ на сервер.
6

Скачать подписанный PDF

GET /documents/{document_id}/download возвращает временную ссылку на файл. file_type по умолчанию FILE_TYPE_PDF — подписанный PDF.
Другие типы файлов — FILE_TYPE_PREVIEW (печатная форма), FILE_TYPE_DDCARD (карточка КЭД), FILE_TYPE_DOCX, FILE_TYPE_JSON.

Согласование, отклонение, доработка, отзыв

Кроме подписания, участник действует на своём активном слоте — participant_id берётся из того же route.steps[].participants[].id.
_approve, _reject и _request_changes действуют на активный слот вызывающего. Чтобы узнать, какой шаг сейчас активен и какой у вас participant_id, перечитайте документ через GET /documents/{document_id}.

Дальше

Шаблоны

Как прочитать variable_schema перед созданием.

События

Ловите document.completed вместо опроса статуса.