Перейти к основному содержанию
Транзакции представляют собой деньги. События охватывают всё остальное, что известно вашей платформе: вход в систему, предшествовавший выводу средств, действие, с помощью которого фишки были перемещены между двумя счетами, бонус, полученный дважды, чарджбэк, пришедший неделю спустя. События используют единую структуру для всех категорий, идемпотентны по своей конструкции и оцениваются тем же движком правил, что и ваши транзакции.
Приём событий работает по принципу opt-in: его нужно включить явно в Transactions → Settings → Event monitoring. Пока вы этого не сделаете, ничего не меняется: существующие правила для транзакций продолжают срабатывать только на транзакциях, а правило для событий нельзя создать случайно, поскольку правило применяется к транзакциям, если только вы явно не включите в него события.Пока функция не включена, все каналы записи, а именно POST /v3/events/, POST /v3/events/batch/, POST /v3/events/sdk-token/ и канал устройств /v1/events/, возвращают 403 с {"code": "event_monitoring_disabled"}, и ничего не сохраняется, не обогащается и не оценивается. Чтение не затрагивается.

Endpoints

Канал /v3/ серверный и использует ту же аутентификацию через x-api-key, что и остальной API транзакций. Канал /v1/events/ предназначен для устройств: см. отправка событий из SDK.

Структура события

Категории

Десять категорий первого класса, каждая с типизированной валидацией и управляемыми полями правил. auth - это широкая продуктовая категория, а security - подмножество с оценкой риска и упорядоченным жизненным циклом, которое читают правила захвата учётной записи.

Обязательные ключи payload

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

Пример: P2P-расчёт

Пример: чарджбэк

Жизненный цикл споров только дополняется: исправление оформляется новым событием dispute, а первое событие никогда не редактируется.

Идемпотентность

event_id уникален в рамках приложения и представляет собой весь контракт идемпотентности.
  • Тот же event_id, то же содержимое возвращает 200 с "idempotent_replay": true и исходно сохранённым событием. Повторяйте запрос сколько угодно раз.
  • Тот же event_id, другое содержимое возвращает 409. Вы по ошибке повторно использовали идентификатор.

Пакетная отправка

POST /v3/events/batch/ принимает до 500 событий. Частичный успех заложен в дизайн пакета: один некорректный просмотр страницы не должен сломать соседний чарджбэк.
Ответ имеет статус 207 Multi-Status, если что-то было отклонено, и 201 Created, если всё принято.

Статусы

correlation_pending: true означает, что правило сопоставления между субъектами ещё должно выполниться; оно завершится в течение нескольких минут, и статус и оценка события обновятся на месте. См. асинхронные правила.

Хранение

Объём событий гораздо больше объёма транзакций, поэтому каждое событие при поступлении относится к классу хранения. Из таблицы следуют два правила:
  • Событие, с которым сопоставилось правило, является доказательством, поэтому оно автоматически переводится в risk_relevant.
  • События платежей и споров сохраняются на срок хранения транзакций. Они никогда не удаляются по расписанию событий, и переопределения для отдельных классов не могут его сократить.
Переопределить срок хранения для трёх классов, которые удаляются по расписанию, можно для каждого приложения в разделе Transactions → Settings → Event monitoring (от 1 до 730 дней для каждого класса).

Обогащение IP

События содержат то же обогащение IP, что и транзакции: страну, ASN, флаги VPN/прокси и дата-центра. Обогащение выполняется по каждому уникальному адресу, а не по каждому событию. Сессия, которая генерирует 200 просмотров страниц с одного адреса, обогащает данные об этом адресе только один раз. Низкоценная телеметрия идёт дальше: она использует обогащение, только если какое-то другое событие уже выполнило обогащение для этого адреса. Она никогда не запускает собственный поиск. GET /v3/events/enrichment-metrics/ возвращает результат, а консоль показывает те же числа над списком событий:

Чтение событий

Фильтры: event_category, action_type, status, retention_class, subject_vendor_data, business_vendor_data, session_id, device_fingerprint, ip_address, game_id, round_id, affiliate_code, payment_reference_id, counterparty_vendor_data, matched_only, occurred_from, occurred_to, search. Фильтры с несколькими значениями повторяют параметр (?status=A&status=B).

Таймлайн одного субъекта

vendor_data уникален только в пределах типа сущности: один и тот же идентификатор может относиться и к пользователю, и к компании, и Didit считает их двумя разными субъектами. entity_type указывает, какой из них вы запрашиваете: individual (по умолчанию) или company. Если не указать его для идентификатора компании, вернется таймлайн физического лица, а не оба сразу. Те же фильтры списка применяются и здесь. GET /v3/events/{event_uuid}/ добавляет payload, контекст устройства, обогащение IP-данными, кешированные сигналы риска субъекта и все совпадения с правилами с их доказательствами, включая то, было ли значение каждого совпавшего поля вычислено на сервере, получено через SDK или предоставлено клиентом. DELETE /v3/events/{event_uuid}/delete/ удаляет одно событие. Оно перестает возвращаться при любом чтении, и удаление необратимо.

Далее

Правила для событий

Правила по скорости, соотношению, последовательности и корреляции на основе данных событий.

Отправка событий через SDK

Фиксируйте события прямо с устройства с помощью учётных данных с ограниченной областью действия.
Последнее изменение 7 ноября 2026 г.