# Triad × Дія: пакет подготовки интеграции

Дата: 25.09.2026. Статус: внутренний серверный контур подготовлен и проверен тестами. Официальный партнёрский адаптер ещё не подключён. Вход через Дію сейчас недоступен.

## Продуктовый сценарий

1. Участник создаёт ключ устройства и подтверждает владение им подписанной регистрацией. Тестовая группа доступна по приглашению.
2. После партнёрского подключения кнопка создаст одноразовый запрос, связанный с аутентифицированной сессией, ключом устройства, origin и назначением `triad-device-admission-v1`.
3. Пользователь подтверждает запрос в Дії. Сам переход обратно или поле `success: true` ничего не подтверждают.
4. Сервер проверяет доказательство провайдера по официальной партнёрской спецификации и связывает его с исходным запросом. Срок запроса — 120 секунд; использование допуска — однократное и атомарное.
5. Пользователь отдельно разрешает CPU/RAM/GPU и задаёт лимиты. Подтверждение человека не доказывает честность железа, выполнение работы или право на выплату.

Целевой продукт — [Дія Антибот](https://integration.diia.gov.ua/antibot.html): публичное описание допускает подтверждение человека без получения персональных документов. [Дія.Підпис](https://integration.diia.gov.ua/signature.html) и [BankID НБУ](https://bank.gov.ua/ua/bank-id-nbu) — отдельные интеграции для других целей; их нельзя считать взаимозаменяемыми API.

## Подготовленные компоненты

- `IdentityAdmission`: состояния creating → pending → verified → consumed; также cancelled / failed / expired. Поздний callback не восстанавливает закрытый запрос.
- Хранилище с compare-and-swap: привязка к устройству и сессии, уникальная ссылка провайдера, защита от повторного использования. Документы, ФИО и идентификатор человека в записи допуска не сохраняются.
- `GET /api/auth/providers`: реальная готовность интеграции. В текущем развёртывании `diia.ready=false`.
- `POST /api/auth/diia/start`, `/callback`, `/consume`: зарезервированы и закрыты с HTTP 503 до подключения адаптера. Доступ по приглашению не помечается как подтверждённый Дією.
- Тесты: поддельное подтверждение, чужая сессия/устройство, повторное одновременное использование, истечение, отмена, недоверенный URL и подмена внутренних полей.

Внутренний интерфейс адаптера Triad: `readiness()`, `start(context, {signal})`, `verifyEvidence(request, {signal})`. **Это не API Дії.** Форматы запросов, подписи, endpoints, deep links, разрешённые схемы URL, ключи и ротация определяются только выданной партнёрской документацией. Тестовый провайдер существует исключительно в тестах и не включён в приложение. Текущий allowlist принимает HTTPS-ссылки; если официальный контракт использует другую схему, добавить её строго по документации с отдельными тестами.

## Пакет для партнёрского подключения

- Описание Triad, юридическое лицо, публичный домен, контакты ответственных, точная цель Антибот и политика минимизации/удаления данных.
- Заявка через [официальную страницу интеграции](https://integration.diia.gov.ua/); согласование требуемых условий и доступа в тестовую среду.
- Версионная техническая спецификация, официальные endpoints, учётные данные/сертификаты, правила подписи и callback, повторов, отказов, ротации и отзыва ключей.
- Реализация адаптера с проверкой доказательств на сервере, ограничением времени и размера ответов, фиксированным allowlist, хранением секретов вне фронтенда и репозитория.
- Подключение begin/consume к проверенной сессии, серверное подтверждение допуска и выбранной политике членства; callback — только через проверяющий адаптер. Проверка ttl, redirect, replay, конкуренции, недоступности провайдера, утечки в логи и отзыва сессии в партнёрской среде.
- Согласование конечного интерфейса и брендинга с провайдером. Независимая проверка перед включением настоящего допуска и выплат.

Антибот не заменяет защиту от DDoS. В пилоте действуют ограничения запросов, подписанная регистрация, лимит группы и короткие резервы. Для публичного коммерческого допуска нужны пограничные лимиты/WAF, бюджет запросов и затрат, наблюдаемость и управление инцидентами.

## Если кнопка должна находиться внутри приложения Дія

Это отдельное продуктовое партнёрство: Triad не может самостоятельно добавить экран или кнопку в чужое приложение. Подготовленный сценарий для согласования — «Подключить устройство к Triad»: открытие официального HTTPS-адреса Triad, подтверждение допуска через согласованный механизм, затем отдельное добровольное разрешение ресурсов с лимитами и отзывом. Ссылка не должна содержать ключи, токены группы или документы. Для возврата используется только согласованный одноразовый контекст. Изменение приложения Дія, размещение кнопки и официальный брендинг выполняются после согласования с его владельцем; этот релиз их не заявляет.
