# Аудит

Tenant API предоставляет доступ к журналу аудита тенанта, содержащему записи обо всех действиях пользователей, изменениях конфигурации и операциях, выполненных через API. Требуемый scope: **audit:read**.

## Получение записей аудита [#получение-записей-аудита]

API operations:

- `GET /v1/kyc/audit`

## Типы событий аудита [#типы-событий-аудита]

События классифицируются по типам ресурсов.

### Сессии верификации [#сессии-верификации]

| Событие            | Описание                        |
| ------------------ | ------------------------------- |
| `session.created`  | Создание сессии                 |
| `session.started`  | Начало прохождения сессии       |
| `session.approved` | Одобрение верификации           |
| `session.rejected` | Отклонение верификации          |
| `session.expired`  | Истечение срока действия сессии |

### Ревью [#ревью]

| Событие           | Описание                    |
| ----------------- | --------------------------- |
| `review.assigned` | Назначение задачи оператору |
| `review.started`  | Начало проверки оператором  |
| `review.decided`  | Принятие решения по ревью   |

### Флоу (сценарии верификации) [#флоу-сценарии-верификации]

| Событие                       | Описание                                              |
| ----------------------------- | ----------------------------------------------------- |
| `flow.created`                | Создание флоу                                         |
| `flow.updated`                | Обновление флоу                                       |
| `flow.cloned`                 | Клонирование флоу (создание копии)                    |
| `flow.archived`               | Архивирование флоу                                    |
| `flow.country_filter_changed` | Изменение фильтра стран в шаге `country_select`       |
| `flow.deleted`                | Удаление флоу                                         |

### API-ключи [#api-ключи]

| Событие           | Описание                                                          |
| ----------------- | ----------------------------------------------------------------- |
| `api_key.created` | Создание ключа                                                    |
| `api_key.updated` | Обновление параметров ключа (scope, имя, лимиты)                  |
| `api_key.rotated` | Ротация секрета ключа                                             |
| `api_key.revoked` | Отзыв ключа                                                       |
| `api_key.deleted` | Удаление ключа                                                    |

### Пользователи [#пользователи]

| Событие                 | Описание                                            |
| ----------------------- | --------------------------------------------------- |
| `user.created`          | Создание учётной записи                             |
| `user.updated`          | Обновление учётной записи                           |
| `user.deleted`          | Удаление учётной записи                             |
| `user.login`            | Вход в систему                                      |
| `user.logout`           | Выход из системы                                    |
| `user.login_failed`     | Неудачная попытка входа                             |
| `user.password_changed` | Изменение пароля                                    |
| `user.password_reset`   | Сброс пароля администратором                        |

### Команда (роли и приглашения) [#команда-роли-и-приглашения]

| Событие                       | Описание                                          |
| ----------------------------- | ------------------------------------------------- |
| `team.invite_created`         | Создание приглашения в команду                    |
| `team.invite_resent`          | Повторная отправка приглашения                    |
| `team.invite_deleted`         | Удаление приглашения                              |
| `team.member_removed`         | Удаление участника из команды                     |
| `team.role_changed`           | Изменение роли участника                          |
| `team.permissions_changed`    | Изменение тонких прав участника                   |

### Настройки и тенант [#настройки-и-тенант]

| Событие                | Описание                                  |
| ---------------------- | ----------------------------------------- |
| `settings.updated`     | Изменение настроек                        |
| `tenant.created`       | Создание тенанта                          |
| `tenant.updated`       | Обновление тенанта                        |
| `tenant.suspended`     | Приостановка тенанта                      |
| `tenant.blocked`       | Блокировка тенанта                        |
| `tenant.unblocked`     | Разблокировка тенанта                     |
| `tenant.deleted`       | Удаление тенанта                          |
| `tenant.force_logout`  | Принудительный выход всех пользователей   |

### Аппликанты и компании (KYC/KYB) [#аппликанты-и-компании-kyckyb]

| Событие             | Описание                     |
| ------------------- | ---------------------------- |
| `applicant.created` | Создание аппликанта          |
| `applicant.updated` | Обновление данных аппликанта |
| `applicant.deleted` | Удаление аппликанта          |
| `business.deleted`  | Удаление компании (KYB)      |

### Документы и медиа [#документы-и-медиа]

| Событие              | Описание                                   |
| -------------------- | ------------------------------------------ |
| `document.uploaded`  | Загрузка документа                         |
| `document.requested` | Оператор запросил повторную загрузку       |
| `document.deleted`   | Удаление документа                         |
| `selfie.uploaded`    | Загрузка селфи                             |

### Вебхуки [#вебхуки]

| Событие                    | Описание                                |
| -------------------------- | --------------------------------------- |
| `webhook.configured`       | Настройка вебхука (общие параметры)     |
| `webhook.endpoint_created` | Создание endpoint                       |
| `webhook.endpoint_updated` | Обновление endpoint                    |
| `webhook.endpoint_deleted` | Удаление endpoint                       |
| `webhook.secret_rotated`   | Ротация секрета endpoint                |
| `webhook.test_sent`        | Отправка тестового вебхука              |
| `webhook.delivered`        | Успешная доставка вебхука               |
| `webhook.failed`           | Ошибка доставки вебхука                 |

### Ссылки верификации [#ссылки-верификации]

| Событие                            | Описание                                          |
| ---------------------------------- | ------------------------------------------------- |
| `verification_link.created`        | Создание ссылки верификации                       |
| `verification_link.activated`      | Активация ссылки заявителем                       |
| `verification_link.sent`           | Отправка ссылки (email / SMS)                     |
| `verification_link.duplicated`     | Создание копии ссылки                             |
| `verification_link.bulk_action`    | Массовое действие над ссылками                    |
| `verification_link.revoked`        | Отзыв ссылки                                      |

### Сессии (управление в админке) [#сессии-управление-в-админке]

| Событие              | Описание                                    |
| -------------------- | ------------------------------------------- |
| `session.paused`     | Сессия приостановлена оператором            |
| `session.resumed`    | Сессия возобновлена оператором              |
| `session.cancelled`  | Сессия отменена оператором                  |
| `session.deleted`    | Сессия удалена                              |
| `session.exported`   | Экспорт данных сессии                       |

### Ручное ревью (расширенные действия) [#ручное-ревью-расширенные-действия]

| Событие                        | Описание                                          |
| ------------------------------ | ------------------------------------------------- |
| `review.unassigned`            | Снятие назначения с задачи ревью                  |
| `review.priority_updated`      | Изменение приоритета задачи                       |
| `review.comment_added`         | Добавлен комментарий к задаче                     |
| `review.resubmit_requested`    | Запрошена повторная загрузка шага у заявителя     |
| `review.resubmit_cancelled`    | Отмена запроса на повторную загрузку              |

### Прочее [#прочее]

| Событие                         | Описание                                           |
| ------------------------------- | -------------------------------------------------- |
| `data.exported`                 | Экспорт данных                                     |
| `deletion_request.created`      | Создан запрос на удаление данных                   |
| `deletion_request.cancelled`    | Запрос на удаление отменён                         |

## Структура записи аудита [#структура-записи-аудита]

Каждая запись содержит следующие поля:

| Поле            | Описание                                                                                                            |
| --------------- | ------------------------------------------------------------------------------------------------------------------- |
| `id`            | UUID записи аудита                                                                                                  |
| `tenant_id`     | UUID тенанта                                                                                                        |
| `actor_type`    | Тип актора: `admin_user`, `superadmin_user` (действия со стороны OneKYC support), `api_key`, `system`, `applicant`  |
| `actor_id`      | UUID актора (или null для системных событий)                                                                        |
| `actor_email`   | Адрес электронной почты актора (при наличии)                                                                        |
| `action`        | Тип события (см. перечень выше)                                                                                     |
| `resource_type` | Тип ресурса: `session`, `applicant`, `document`, `selfie`, `flow`, `api_key`, `user`, `tenant`, `webhook`, `review` |
| `resource_id`   | UUID ресурса                                                                                                        |
| `details`       | Объект с детальной информацией об изменениях                                                                        |
| `created_at`    | Время события (ISO 8601)                                                                                            |

### Структура объекта `details` [#структура-объекта-details]

| Поле        | Описание                                                        |
| ----------- | --------------------------------------------------------------- |
| `old_value` | Предыдущие значения (для операций обновления)                   |
| `new_value` | Новые значения (для операций обновления)                        |
| `changes`   | Перечень изменённых полей                                       |
| `metadata`  | Дополнительный контекст (IP-адрес, идентификатор сессии и т.д.) |

## Срок хранения записей [#срок-хранения-записей]

Срок хранения записей аудита определяется параметром `data_retention_days` в тарифном плане тенанта (поле billing-плана). По истечении срока записи автоматически удаляются.

Для долгосрочного архивирования используйте периодический экспорт данных через `GET /v1/kyc/audit` с фильтром по диапазону `created_at`.

## Дополнительные сведения [#дополнительные-сведения]

- Выше приведены наиболее распространённые типы действий. Полный перечень доступен в разделе **Аудит** административной панели (фильтр по полю «Действие»).
- Удаление записей аудита через API невозможно — доступно только чтение.
- Действия, выполненные через Tenant API, фиксируются с `actor_type = "api_key"`.
- Действия, выполненные службой поддержки OneKYC, фиксируются с `actor_type = "superadmin_user"`.
- Конфиденциальные данные (пароли, секреты ключей) никогда не включаются в поле `details`.
- Для мониторинга событий в реальном времени используйте WebSocket-подключение в административной панели.

---

Полная спецификация формата данных приведена в [Справочнике API (OpenAPI)](/ru/api/api-reference).
