← Все API DocHub

Подпись документов через eGov

Android, iPhone и QR на компьютере. Подпись выполняется в eGov Mobile или eGov Business через SIGEX. Ключ ЭЦП и пароль не передаются в DocHub.

Поддерживается один PDF до 5 МиБ. Перед запуском пользователь должен согласиться на передачу документа через SIGEX в eGov. Документ должен ожидать подписи этого участника, с указанным ИИН/БИН и соблюдённой очередностью.

Авторизация

Во всех запросах передайте Authorization: Bearer USER_JWT либо X-Sign-Token: PERSONAL_SIGN_TOKEN из персональной ссылки подписанта. Токен передаётся только заголовком. Общий API-ключ не разрешает подписание за человека.

1. Создать сессию

POST /api/signing/sigex/start

{ "doc_id": "DOCUMENT_UUID" }

Пример:

curl https://doc-hub.net/api/signing/sigex/start \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer USER_JWT' \
  --data '{"doc_id":"DOCUMENT_UUID"}'

Ответ:

{
  "operation_id": "OPERATION_UUID",
  "doc_id": "DOCUMENT_UUID",
  "status": "waiting",
  "expires_at": "ISO_DATETIME",
  "qr_code": "BASE64_PNG",
  "mobile_url": "HTTPS_LINK_FROM_EGOV",
  "business_url": "HTTPS_LINK_FROM_EGOV"
}

Покажите QR как data:image/png;base64,…, либо откройте соответствующую ссылку на этом телефоне. При повторном запуске активной сессии возвращается её текущий статус: QR-поля доступны только для waiting.

2. Получить результат

GET /api/signing/sigex/status?doc_id=DOCUMENT_UUID&operation_id=OPERATION_UUID

Передавайте operation_id из ответа /start. Опрашивайте раз в 4 секунды, включая возврат приложения на передний план. Ограничивайте повторы при ошибках сети.

curl 'https://doc-hub.net/api/signing/sigex/status?doc_id=DOCUMENT_UUID&operation_id=OPERATION_UUID' \
  -H 'Authorization: Bearer USER_JWT'
СтатусЗначение
waitingОжидание пользователя в eGov
verifying / savingСервер проверяет CMS и сохраняет результат
signedПодпись проверена и сохранена
canceled / expired / failedОперация завершена без подтверждения подписи; при failed есть error
{
  "operation_id": "OPERATION_UUID",
  "doc_id": "DOCUMENT_UUID",
  "status": "signed",
  "success": true,
  "signature_id": "SIGNATURE_UUID",
  "all_signed": false,
  "doc_status": "reviewing"
}

all_signed: false означает, что подпись этого участника сохранена, но есть другие участники маршрута. Возврат из eGov сам по себе не подтверждает подпись.

Запрос только по документу

GET /api/signing/sigex/status?doc_id=DOCUMENT_UUID также поддерживается: возвращает последнюю операцию того же пользователя/персонального токена из памяти текущего сервера. Если её нет — 404 SIGEX_OPERATION_NOT_FOUND. Для восстановления сохранённой подписи после перезапуска нужен явный operation_id. Пустой или некорректный UUID операции — 400 INVALID_OPERATION_ID.

3. Отменить ожидание

POST /api/signing/sigex/cancel

{ "doc_id": "DOCUMENT_UUID", "operation_id": "OPERATION_UUID" }

Отменяет локальную операцию DocHub до сохранения. Не отзывает уже созданную в eGov ЭЦП. Если сохранение уже началось — 409 SIGNATURE_SAVING, продолжайте проверять статус.

Ошибки и восстановление

HTTP 200 при опросе означает, что состояние прочитано. Документ подписан только при status: signed, после проверки и сохранения CMS. При ошибке вернутся этап и причина:

{
  "operation_id": "OPERATION_UUID",
  "doc_id": "DOCUMENT_UUID",
  "status": "failed",
  "error": "SIGEX_INVALID_RESPONSE",
  "error_stage": "signature",
  "error_reason": "DOCUMENT_ID_MISMATCH"
}

Этапы: upload — передача PDF, signature — получение ответа, document_check — повторная проверка документа и доступа, verification — криптопроверка, saving — сохранение. Передайте поддержке UUID операции, этап и код ошибки. Старые QR и ссылки после истечения срока недействительны: создайте новую операцию через /start.

401/403 — нет доступа; 409 — документ или маршрут изменился; 413 — PDF слишком большой; 415 — не PDF; 429 — лимит; 503 — интеграция недоступна. При SIGNATURE_REJECTED проверка сертификата, OCSP, ИИН/БИН или файла не пройдена.

Сохраняйте UUID операции и проверяйте статус после возврата в приложение. После перезапуска сервера незавершённую сессию нужно начать заново; уже сохранённая подпись восстанавливается из базы. Сначала проверяйте результат, затем предлагайте повторное подписание.

Документация транспорта SIGEX