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_type — STEP_TYPE_APPROVAL (согласование) или STEP_TYPE_SIGNING
(подписание). rule — STEP_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_method — SIGN_METHOD_NCALAYER или SIGN_METHOD_EGOV_MOBILE. Когда
подписан последний обязательный шаг, документ переходит в
DOCUMENT_STATUS_COMPLETED.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 вместо опроса статуса.