Перейти к содержимому

КЭДО — пошаговая инструкция

Модуль КЭДО (korport.kedo 2.0+) — кадровый электронный документооборот в Portal с корпоративной УНЭП. Данные процесса — списки Portal; UIWebPart на /kedo/pages/home. В platform SDK остаются криптография УЦ/УНЭП (KedoCryptoService), тонкий adapter пакетов (KedoPackageAdapter) и job kedo.createIntegrationPackage (например, приказы из модуля отпусков).

Входящие «На подпись»

Сотрудник видит, что нужно подписать или с чем ознакомиться

Подписание и цифровой след

PIN УНЭП и мгновенная проверка подписи

Сертификаты УНЭП

Выпуск корпоративной подписи без КриптоПро и токенов

Рассылка ЛНА

Типовой сценарий: ознакомление с локальным актом

Подпись строится на алгоритмах ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012. Это не УКЭП и не Госключ: для равнозначности бумажной подписи у работодателя должны быть локальные акты, согласие работника и соглашение о признании УНЭП (шаблоны модуль кладёт в библиотеку при установке).

Карточка модуля в каталоге: korport.ru/modules/kedo · этот документ на сайте: korport.ru/docs/kedo


  1. Роли и кто что делает
  2. Как открыть КЭДО
  3. Первичная настройка (один раз)
  4. Юридическая подготовка (рекомендуется до боевого запуска)
  5. Выпуск УНЭП сотруднику
  6. Активация УНЭП сотрудником (PIN)
  7. Перевыпуск и отзыв УНЭП
  8. Отправка документа на подпись
  9. Ознакомление с ЛНА
  10. Как сотрудник подписывает документ
  11. Где увидеть, что документ подписан
  12. Как проверить подпись (цифровой след и .sig.json)
  13. Уведомления
  14. Что нельзя подписывать УНЭП
  15. Частые вопросы и ошибки
  16. Краткая шпаргалка URL

РольКто этоЧто может
Администратор порталаis_portal_adminВсё в КЭДО + установка модуля, лицензия, env
Администратор КЭДОучастник группы «Администраторы КЭДО»Создать УЦ, настройки, выпуск/отзыв УНЭП, отправка документов и ЛНА
Сотрудникобычный пользователь порталаАктивировать свою УНЭП (PIN), видеть «На подпись», подписывать / знакомиться, смотреть свой след

Группа «Администраторы КЭДО» создаётся автоматически при установке модуля. Учётная запись admin (если есть) добавляется в группу provisioner’ом. Остальных людей добавляет администратор портала: Админка → Группы (или экран управления группами).

Без членства в группе (и без роли portal admin) вкладки Отправка, ЛНА, Настройки в интерфейсе КЭДО не показываются.


Есть два удобных способа.

Способ A — прямые адреса (основной рабочий интерфейс)

Заголовок раздела «Способ A — прямые адреса (основной рабочий интерфейс)»

Введите в браузере (подставьте свой хост портала):

РазделАдрес
Входящие «на подпись»https://ваш-портал/kedo/pages/home?view=inbox
Отправка документовhttps://ваш-портал/kedo/send
Ознакомление с ЛНАhttps://ваш-портал/kedo/lna
Сертификаты УНЭПhttps://ваш-портал/kedo/certificates
Настройкиhttps://ваш-портал/kedo/pages/home?view=settings
Карточка конкретного документаhttps://ваш-портал/kedo/packages/{id}

Наверху экрана КЭДО — горизонтальное меню разделов (На подпись, Отправка, …).

После установки модуля в боковом меню портала появляется один пункт «КЭДО» — он открывает /kedo/pages/home. Разделы (На подпись, Отправка, …) переключаются вкладками внутри экрана КЭДО. Старые URL /kedo/inbox и т.п. редиректятся на ?view=….

Значит в лицензии нет entitlement korport.kedo или модуль не установлен. См. §3.


Делает администратор инфраструктуры / портала. Без этих шагов подписи не заработают.

  1. В ключе лицензии Portal должен быть entitlement korport.kedo (на сайте korport.ru / в CRM — пресет «КЭДО»).
  2. Активируйте обновлённый LICENSE.key в портале (Админка → Продукт и лицензия или CLI).

Закрытые ключи сотрудников шифруются на сервере. Без master key выпуск УНЭП и подписание невозможны.

Задайте переменную окружения процессу Portal.Api (и при необходимости Worker):

СпособПример
KubernetesSecret → env у Deployment API: KEDO_MASTER_KEY
Linux / Docker Composeв .env или unit-файле службы
Windowsпеременная среды службы / контейнера

Формат значения (любой из):

  • 64 hex-символа (32 байта), например результат openssl rand -hex 32;
  • Base64 ровно 32 байт;
  • любая длинная секретная строка (из неё система сама выведет 32 байта).

Важно:

  • Ключ храните как секрет (не в git, не в .portalmod).
  • Смена master key ломает расшифровку уже выданных ключей сотрудников — по сути потребуется перевыпуск всех УНЭП.
  • После смены env перезапустите API.
  1. Админка → Модули.
  2. Установите КЭДО с korport.ru / из шаблона kedo / загрузите korport.kedo.portalmod.
  3. Дождитесь успешной установки.

Что создаётся автоматически:

  • группа «Администраторы КЭДО»;
  • узел меню КЭДО;
  • библиотеки «Документы КЭДО» и «Шаблоны КЭДО»;
  • списки настроек, пакетов, получателей, подписей, сертификатов (метаданные) и аудита;
  • в шаблоны загружаются три текстовых файла (Положение, согласие, соглашение об УНЭП).

Миграции БД платформы (идут с обновлением Portal / образом db-init):

  • 074_kedo.sql — таблицы криптографии (kedo_ca, kedo_certificates, kedo_key_blobs);
  • 083_drop_kedo_domain_tables.sql — удаление legacy SQL-таблиц домена после перехода на списки (kedo_packages и др.). Домен процесса хранится только в списках модуля.
  1. Админка → Службы.
  2. Включите службу «Уведомления» (notifications).
  3. Настройте SMTP, если нужны письма (без SMTP in-app колокольчик всё равно может работать; письма будут пропускаться).

Шаг 3.5. Создать корпоративный удостоверяющий центр (УЦ)

Заголовок раздела «Шаг 3.5. Создать корпоративный удостоверяющий центр (УЦ)»
  1. Откройте /kedo/pages/home?view=settings.
  2. Убедитесь, что в карточке УЦ написано, что master key задан.
  3. Заполните название организации (пойдёт в сертификат УЦ).
  4. При желании укажите публичный URL портала (https://portal.company.ru) — он попадёт в ссылки в письмах.
  5. Включите/выключите:
    • Email-уведомления;
    • Уведомления в портале.
  6. Нажмите «Создать УЦ» (если УЦ ещё нет).
  7. Нажмите «Сохранить» для остальных настроек.

После создания УЦ вы увидите отпечаток корневого сертификата — его можно зафиксировать во внутреннем регламенте проверки подписи.

Шаг 3.6. Кому дать права администратора КЭДО

Заголовок раздела «Шаг 3.6. Кому дать права администратора КЭДО»
  1. Откройте управление группами портала.
  2. Найдите «Администраторы КЭДО».
  3. Добавьте сотрудников HR / кадровой службы, которые будут выпускать УНЭП и слать документы.

Готово: можно выпускать подписи сотрудникам.


Техника сама по себе не заменяет документы. Перед массовым запуском:

  1. Откройте узел КЭДО → библиотека «Шаблоны КЭДО» (или найдите файлы в контенте узла).
  2. Возьмите PDF-шаблоны:
    • Положение о КЭДО.pdf;
    • Согласие работника на КЭДО.pdf;
    • Соглашение о признании УНЭП.pdf.
  3. Доработайте тексты с юристом, утвердите ЛНА, соберите согласия.

В соглашении уже описан порядок проверки через блок «Цифровой след» в карточке документа — это как раз то, что видит пользователь в портале.


Делает администратор КЭДО.

  1. Портал генерирует ключевую пару сотрудника (ГОСТ).
  2. Корпоративный УЦ выпускает X.509-сертификат УНЭП (ФИО, email, привязка к user_id, срок обычно 1 год).
  3. Закрытый ключ сохраняется только на сервере, в зашифрованном виде. Админ не видит и не может скачать ключ.
  4. Статус сертификата: pending_activation — пока сотрудник не задаст свой PIN.
  1. Откройте /kedo/certificates.
  2. В блоке «Выпуск УНЭП сотруднику»:
    • начните вводить имя или логин в поле поиска;
    • выберите человека из списка — в поле User ID подставится его UUID;
    • либо вставьте UUID вручную.
  3. Нажмите «Выпустить».
  4. Сотруднику уйдёт уведомление (если включены каналы): «Выпущена корпоративная УНЭП» со ссылкой на /kedo/certificates.
  5. В таблице сертификатов появится запись со статусом pending_activation.

Если у сотрудника уже есть активная УНЭП, система ответит ошибкой: сначала нужно отозвать старую (см. §7).


Делает сам сотрудник под своей учётной записью.

PIN — это «второй фактор согласия» на использование ключа:

  • без PIN ключ нельзя использовать для подписи;
  • администратор не знает PIN и не может подписать документ от имени сотрудника;
  • PIN нужен при каждом подписании.
  1. Войдите в портал своей учётной записью.
  2. Откройте /kedo/certificates
    (или перейдите по ссылке из уведомления / письма).
  3. Если сертификат ждёт вас, увидите блок «Активируйте УНЭП» с серийным номером.
  4. Придумайте PIN:
    • от 6 до 64 символов;
    • не сообщайте никому, не отправляйте в чат/почту.
  5. Введите PIN дважды → «Активировать».
  6. Статус станет active. На экране появится блок «Ваша активная УНЭП» (ФИО в сертификате, серийный номер, срок действия).

После этого можно подписывать документы во «На подпись».

Восстановить PIN нельзя — ключ УНЭП завязан на него. Администратор PIN не знает и сбросить его не может.

Что делать:

  1. Администратор КЭДО на /kedo/certificates отзывает текущий сертификат сотрудника.
  2. Выпускает новый УНЭП этому же сотруднику (§5).
  3. Сотрудник на /kedo/certificates задаёт новый PIN и активирует сертификат (§6 выше).

После этого можно снова подписывать. Документы, уже подписанные старым сертификатом, в цифровом следе остаются; новым ключом подписываются только новые задания.

Подробнее про отзыв и перевыпуск — §7.


Отдельной кнопки «Перевыпустить» нет — это сознательно два шага (отзыв → новый выпуск). Так безопаснее при увольнении, компрометации PIN или утере контроля над учёткой.

  • сотрудник забыл PIN;
  • подозрение, что PIN узнали третьи лица;
  • увольнение / перевод, когда доступ к порталу ещё есть, но подписывать уже нельзя;
  • истечение политики компании (плановая ротация), даже если срок сертификата ещё не вышел.
  1. Администратор КЭДО → /kedo/certificates.
  2. В таблице найдите сертификат сотрудника.
  3. Нажмите «Отозвать» → подтвердите.
  4. Статус станет revoked. Подписывать этим сертификатом больше нельзя.
  1. Убедитесь, что активной УНЭП у сотрудника нет (отозвана или истекла).
  2. Снова выполните §5 — Выпуск.
  3. Сотрудник активирует новый сертификат новым PIN (§6).

Старые подписи на уже подписанных документах остаются в цифровом следе (проверка идёт по сохранённому сертификату и файлу подписи). Отзыв мешает только новым подписям.


Делает администратор КЭДО.

  1. Откройте /kedo/send.
  2. Заполните форму:
ПолеЧто указать
НазваниеКак документ будет виден сотруднику («Приказ о предоставлении отпуска…»)
Тип документаКадровый тип из списка (общий, отпуск, перевод, трудовой договор и т.д.)
ДействиеПодписать — полноценная подпись УНЭП; Ознакомиться — то же криптографически, но формулировка «ознакомлен и согласен»
ПолучателиПоиск по имени/логину → клик по человеку (можно нескольких)
Срок подписанияНеобязательно. Дата и время, к которым нужно подписать. Включает напоминания неподписавшим
ФайлPDF, DOCX и др. — система считает хэш содержимого
  1. Нажмите «Отправить».
  2. Откроется карточка пакета /kedo/packages/{id}.
  3. Каждому получателю уйдёт уведомление «На подпись: …» / «На ознакомление: …» со ссылкой на карточку (и сроком, если указан).

Список всех отправленных пакетов: кнопка «Все пакеты» на экране отправки или адрес /kedo/packages.

СтатусЗначение
pendingНикто ещё не подписал
partialПодписали часть получателей
completedПодписали все
cancelledНет получателей / отменён

Типовой сценарий того же движка пакетов.

  1. Администратор КЭДО → /kedo/lna.
  2. Укажите название ЛНА, получателей, при необходимости срок, файл.
  3. «Разослать на ознакомление».

Внутри создаётся пакет с типом lna_ack и действием ознакомиться. Сотрудник на карточке видит кнопку «Ознакомлен и согласен» и вводит PIN — как при обычной подписи.

Дальше статусы и цифровой след те же, что у обычного пакета.


  1. Есть активная УНЭП (выпуск + PIN).
  2. Если УНЭП нет — на /kedo/inbox будет жёлтое предупреждение со ссылкой на сертификаты.
  1. Откройте /kedo/inbox — список документов со статусом ожидания.
    Либо кликните уведомление в колокольчике / ссылку в письме.
  2. Откройте нужную строку → карточка документа.
  3. При необходимости нажмите «Скачать файл» и прочитайте документ.
  4. В блоке подписания:
    • для подписи: «Подписать УНЭП»;
    • для ознакомления: «Ознакомлен и согласен».
  5. Введите свой PIN.
  6. Подтвердите отправку формы.

Если PIN неверный — ошибка, документ не считается подписанным.
Если PIN верный:

  • формируется подпись ГОСТ в формате portal-kedo-unep-v1;
  • она проверяется сразу;
  • файл подписи сохраняется на сервере (.sig.json рядом с пакетом в object storage);
  • ваш статус в таблице получателей становится signed с датой и временем;
  • на карточке появляется отметка, что вы уже подписали.

Кнопка «Скачать файл» отдаёт исходный документ пакета.
После хотя бы одной подписи появляется «Скачать документ с подписями» — ZIP с документом и файлами подписей (.sig.json, формат portal-kedo-unep-v1). В таблице цифрового следа у каждой подписи есть кнопка «.sig.json». Целостность также смотрите в блоке «Цифровой след».

Повторно подписать тот же пакет тем же получателем нельзя.


  • На своей карточке документа — зелёная отметка «Вы подписали документ … (дата)».
  • Во «На подпись» после обновления документ пропадёт из списка pending (inbox показывает ожидающие).
  1. Уведомление (колокольчик и/или email, если включены каналы):
    • при каждой подписи получателя — «Подписано: … (N/M)»;
    • когда подписали все — «Подписано всеми: …».
  2. Карточка /kedo/packages/{id} (из «Все пакеты» или из уведомления):
    • статус пакета (partial / completed);
    • счётчик «N/M подписано»;
    • срок (если задан при отправке);
    • таблица «Получатели»: сотрудник / статус / дата.

Так видно, кто уже подписал, а кто ещё нет.


12. Как проверить подпись (цифровой след и .sig.json)

Заголовок раздела «12. Как проверить подпись (цифровой след и .sig.json)»

На карточке документа система при открытии заново:

  1. скачивает файл документа;
  2. считает хэш ГОСТ Р 34.11-2012;
  3. сверяет с хэшем, сохранённым при отправке («Совпадение хэша файла: да/нет»);
  4. для каждой подписи проверяет криптографию по сертификату сотрудника и цепочке до корпоративного УЦ;
  5. показывает:
КолонкаСмысл
ПодписантФИО / отображаемое имя
КогдаДата и время подписи
Проверка✓ валидна или текст ошибки
СертификатСерийный номер УНЭП
IPАдрес, с которого выполнили подпись
Файлкнопка «.sig.json» — скачать контейнер этой подписи

Дополнительно на карточке видны:

  • хэш документа (hex);
  • отпечаток УЦ организации;
  • «Скачать документ с подписями» — ZIP: исходный файл + все signatures/*.sig.json.

Если файл на диске подменили после отправки — совпадение хэша будет «нет», живая проверка подписей тоже укажет на проблему. Это и есть практическая проверка целостности из соглашения об УНЭП.

Подписи хранятся отдельно от PDF/DOCX: контейнер portal-kedo-unep-v1 (JSON) в object storage. В следе система заново читает документ и каждый сохранённый файл подписи.

Файл подписи — JSON, не CAdES и не контейнер КриптоПро. В нём есть и кто / когда, и криптоматериал:

ПолеСмысл
Formatвсегда portal-kedo-unep-v1
DigestAlgалгоритм хэша документа: GOST3411-2012-256
SignAlgалгоритм подписи: GOST3410-2012-256
ContentHashHexхэш исходного документа (hex)
SignatureBase64сама подпись ГОСТ (base64)
CertificateBase64X.509 сертификат УНЭП подписанта (DER, base64): CN = ФИО, email, организация
SignedAtUtcмомент подписи (UTC), заявленный при Sign

Кто подписал — из CertificateBase64 (subject: CN=…, emailAddress=…).
Когда — поле SignedAtUtc (то же время в колонке «Когда» цифрового следа).

Пример subject сертификата:
CN=Администратор портала, OU=UNEP, O=…, emailAddress=user@example.com.

Нужен архив документ + .sig.json (кнопка «Скачать документ с подписями» или отдельные кнопки «.sig.json»). Желательно сохранить и сертификат корпоративного УЦ (отпечаток УЦ виден в следе).

  1. Кто и срок сертификата — без Portal: декодировать CertificateBase64 в DER и открыть, например
    openssl x509 -inform DER -in cert.cer -noout -subject -dates -serial.
  2. Целостность и криптопроверка — не через КриптоПро / обычный CAdES: формат свой, алгоритмы ГОСТ. Практичные варианты:
    • снова открыть пакет в Portal и смотреть «Цифровой след»;
    • свой verifier на ГОСТ (та же логика, что в ядре Portal): пересчитать хэш файла → сравнить с ContentHashHex → проверить SignatureBase64 открытым ключом из сертификата → (желательно) что сертификат выдан вашим УЦ.

SignedAtUtcзаявленное время из контейнера, не метка доверенного TSA. Юридическая сила — по локальным актам и соглашению об УНЭП + цепочке до корпоративного УЦ, не как у УКЭП / Госключа.

API:

  • GET /api/v1/kedo/packages/{id}/signed-bundle — ZIP;
  • GET /api/v1/kedo/packages/{id}/signatures/{signatureId}/file — один .sig.json;
  • GET /api/v1/kedo/packages/{id}/trail — живая проверка без скачивания.

СобытиеКомуТема / смысл
Выпущена УНЭПсотрудникуНужно активировать PIN
Документ на подписькаждому получателюСсылка на /kedo/packages/{id} (+ срок, если задан)
Документ на ознакомление (ЛНА)каждому получателюТо же
Получатель подписалинициатору (кто отправил пакет)Прогресс N/M
Подписали всеинициаторуПакет завершён
Напоминание о сроке / просрочкенеподписавшим получателямТолько если у пакета задан срок

Каналы (включаются в /kedo/pages/home?view=settings):

  1. В портале (in-app) — колокольчик в шапке → список уведомлений /notifications, источник «КЭДО».
  2. Email — на адрес из профиля пользователя; в письме абсолютная ссылка, если задан публичный URL портала.
  1. При отправке / ЛНА укажите «Срок подписания» (необязательно).
  2. В /kedo/pages/home?view=settings:
    • включите «Напоминания о сроке»;
    • задайте за сколько дней начинать напоминать (по умолчанию 1);
    • при необходимости «Напоминать при просрочке» (ежедневно, пока не подписано).
  3. Напоминания выполняет Timer Job модуля korport.kedo.reminders (ежедневно ~09:00). Встроенная служба kedo / kedo.remindPending больше не используется.
  4. Письма уходят только если включена служба «Уведомления» и настроен SMTP; in-app — по тумблеру в настройках КЭДО.

Поле «За сколько дней до срока» — это не час запуска, а условие «когда пора напоминать» относительно дедлайна документа. Время обхода задаёт расписание Timer Job модуля.

Повторное напоминание одному получателю — не чаще чем раз в ~20 часов.

  1. Служба «Уведомления» в админке (для email).
  2. Модуль korport.kedo 2.0+ с Timer Job напоминаний.
  3. Тумблеры в настройках КЭДО (email / in-app / напоминания).
  4. Для почты — рабочий SMTP.
  5. У пользователя заполнен email, если нужны письма.

Если SMTP не настроен, задание на письмо обычно пропускается без падения подписи; in-app при этом может прийти.

  1. Нажмите колокольчик в шапке.
  2. Найдите запись с источником КЭДО.
  3. Нажмите переход по ссылке — откроется активация сертификата или карточка документа.

По ТК РФ корпоративной УНЭП сотрудника нельзя оформлять (модуль отклонит отправку таких типов):

Тип в системеДокумент
dismissal_orderПриказ об увольнении
accident_actАкт о несчастном случае на производстве
ot_briefingИнструктаж по охране труда

Для них нужны УКЭП, Госключ или бумажная подпись — вне текущего модуля КЭДО.

Обычные кадровые документы (отпуска, переводы, командировки, трудовой договор, ЛНА и т.п.) — можно.


«Модуль korport.kedo недоступен по лицензии»
Нет entitlement или не активирован ключ. Проверьте лицензию и установку модуля.

«Не задан KEDO_MASTER_KEY»
Нет переменной окружения у API или API не перезапускали после добавления. См. §3.2.

«Сначала создайте корпоративный УЦ»
Зайдите в настройки КЭДО и нажмите «Создать УЦ».

«У сотрудника уже есть активная УНЭП»
Сначала отзыв, потом новый выпуск (§7).

«Нет активной УНЭП» при подписи
Сотрудник не активировал сертификат PIN’ом или сертификат отозван.

«Неверный PIN»
Опечатка или забытый PIN. Восстановить PIN нельзя — только отзыв текущего сертификата и выпуск нового (§6 «Если PIN забыли», §7). Документы, подписанные старым сертификатом, в цифровом следе сохраняются.

Письма не приходят, колокольчик пустой
Служба «Уведомления», SMTP, тумблеры в /kedo/settings, email в профиле.

Вкладки «Отправка» / «ЛНА» не видны
Вы не в группе «Администраторы КЭДО» и не portal admin.

Можно ли подписать с телефона?
Да, если открывается веб-интерфейс портала и сотрудник знает PIN. Отдельного мобильного приложения нет.

Где физически ключ сотрудника?
Только на сервере Portal (зашифрованный blob в БД). В браузер и админу ключ не отдаётся.

K8s / Windows / Linux — разная установка крипты?
Нет. Движок УНЭП в ядре Portal на любой ОС. Модуль включает лицензию, группу и меню. Формат файла подписи portal-kedo-unep-v1 — это не Docker-контейнер, а структура данных подписи.


/kedo/settings ← УЦ, уведомления, название организации
/kedo/certificates ← выпуск / активация PIN / отзыв
/kedo/send ← отправить на подпись
/kedo/lna ← разослать ЛНА
/kedo/inbox ← что нужно подписать мне
/kedo/packages ← все пакеты (админ)
/kedo/packages/{id} ← карточка, статусы, цифровой след
/notifications ← колокольчик: все in-app, в т.ч. КЭДО
  1. Лицензия korport.kedo + установлен модуль
  2. KEDO_MASTER_KEY + перезапуск API
  3. Служба «Уведомления» (+ SMTP по желанию)
  4. /kedo/settings → создать УЦ → сохранить URL и тумблеры
  5. Людей HR добавить в «Администраторы КЭДО»
  6. Выпустить УНЭП → сотрудник задал PIN
  7. Отправить тестовый документ → подписать → проверить «Цифровой след»

Во всех трёх host API есть api.Kedo / ctx.Kedo:

HostИнтерфейсACL
Event ReceiverIReceiverApi.KedoIReceiverKedoApientitlement; trusted host (без членства в «Администраторы КЭДО»)
Timer JobITimerJobApi.KedoITimerJobKedoApiто же
WebPartIWebPartContext.KedoIWebPartKedoApientitlement + администратор КЭДО (как UI)
using Portal.Contracts.Kedo;
var packageId = await api.Kedo.CreatePackageAsync(
new KedoCreatePackageRequest
{
Title = "Документ на подпись",
DocKind = "general", // или order_vacation, …
ActionKind = "sign", // или ack
RecipientUserIds = [userId],
DeadlineAt = DateTime.UtcNow.AddDays(5),
},
fileBytes,
"document.pdf",
"application/pdf",
ct);
var status = await api.Kedo.GetPackageStatusAsync(packageId, ct); // pending / partial / completed / …

DTO: Portal.Contracts.Kedo.KedoCreatePackageRequest. Без curl и без raw job payload.

Краткий API-префикс: /api/v1/kedo (нужна сессия пользователя с правами админа КЭДО).

ГруппаСервисПримеры
CryptoKedoCryptoServiceGET /status, POST /ca/ensure, certificates (issue / activate / revoke / bulk)
ПакетыKedoPackageAdapterinbox, packages, POST /packages, POST /lna, …/sign, …/trail, …/file, …/signed-bundle, settings

Совместимость: job kedo.createIntegrationPackage (base64) остаётся; предпочтителен SDK CreatePackageAsync. Старый payload без docKindorder_vacation.

Формат подписи: portal-kedo-unep-v1 → object key
kedo/{packageId}/signatures/{userId}.sig.json.
Выгрузка: GET /api/v1/kedo/packages/{id}/signed-bundle (ZIP: документ + signatures/*.sig.json).

Исходники модуля: packages/modules/korport/kedo/ (см. README модуля).
Platform: backend/src/Portal.Application/Kedo/ (KedoCryptoService, KedoPackageAdapter, KedoHostFacade, …).