Приём событий работает по принципу 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
Некоторые действия невозможно сопоставить без определённых ключей, поэтому валидация отклоняет такие события, а не сохраняет доказательства, которые никто не сможет связать.Пример: 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. - События платежей и споров сохраняются на срок хранения транзакций. Они никогда не удаляются по расписанию событий, и переопределения для отдельных классов не могут его сократить.
Обогащение 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
Фиксируйте события прямо с устройства с помощью учётных данных с ограниченной областью действия.