Pular para o conteúdo principal
Transações são o dinheiro. Eventos são todo o resto que a sua plataforma sabe: o login que antecedeu o saque, a mão que moveu fichas entre duas contas, o bônus resgatado duas vezes, o chargeback que chegou uma semana depois. Os eventos usam um único envelope para todas as categorias, são idempotentes por design e são avaliados pelo mesmo motor de regras que pontua as suas transações.
A ingestão de eventos é opcional (opt-in). Ative-a em Transactions → Settings → Event monitoring. Até que você o ative, nada muda: as suas regras de transação existentes continuam sendo acionadas apenas por transações, e uma regra de evento não pode ser criada por acidente, porque uma regra se aplica a transações, a menos que você inclua eventos explicitamente.Enquanto o recurso não estiver ativado, todos os canais de escrita (POST /v3/events/, POST /v3/events/batch/, POST /v3/events/sdk-token/ e o canal de dispositivo /v1/events/) respondem 403 com {"code": "event_monitoring_disabled"}, e nada é armazenado, enriquecido ou avaliado. As leituras não são afetadas.

Endpoints

O canal /v3/ é o canal de servidor e usa a mesma autenticação x-api-key que o restante da API de transações. O canal /v1/events/ é o canal de dispositivo. Veja envio de eventos pelo SDK.

O envelope

Categorias

Dez categorias nativas, cada uma com validação tipada e campos de regra gerenciados. auth é a categoria ampla de produto; security é o subconjunto voltado à avaliação de risco, com o ciclo de vida ordenado usado pelas regras de tomada de controle de conta (account takeover).

Chaves obrigatórias do payload

Algumas ações não podem ser correlacionadas sem chaves específicas, por isso a validação as rejeita em vez de armazenar evidências que ninguém consegue relacionar.
Envie referências e hashes, nunca os segredos propriamente ditos. Instrumentos de pagamento, destinos de saque e alterações em controles da conta são armazenados na forma do hash da referência que você envia. Nunca envie um número de cartão, um endereço de saque completo, um hash de senha ou um segredo de MFA.

Exemplo: uma liquidação P2P

Exemplo: um chargeback

Os ciclos de vida de disputas aceitam apenas acréscimos (append-only): uma correção é um novo evento dispute, nunca uma edição do primeiro.

Idempotência

event_id é único por aplicação e constitui todo o contrato de idempotência.
  • Mesmo event_id, mesmo conteúdo retorna 200 com "idempotent_replay": true e o evento armazenado originalmente. Repita a requisição quantas vezes quiser.
  • Mesmo event_id, conteúdo diferente retorna 409. Você reutilizou um ID por engano.

Lotes

POST /v3/events/batch/ aceita até 500 eventos. Um lote é parcialmente bem-sucedido intencionalmente: uma visualização de página malformada nunca deve derrubar um chargeback no mesmo lote.
A resposta é 207 Multi-Status quando algo foi rejeitado e 201 Created quando todos os eventos foram registrados.

Status

correlation_pending: true significa que uma regra que envolve vários sujeitos ainda precisa ser executada; a pendência é resolvida em poucos minutos, e o status e a pontuação do evento são atualizados no próprio evento. Veja regras assíncronas.

Retenção

Os eventos têm volume muito maior que as transações, por isso cada um é classificado em uma classe de retenção ao chegar. Duas regras decorrem da tabela:
  • Um evento que corresponde a uma regra é evidência, por isso é promovido automaticamente para risk_relevant.
  • Eventos de pagamento e de disputa mantêm a retenção de transações. Eles nunca expiram pelo cronograma de eventos, e as substituições por classe não podem encurtá-la.
Substitua os períodos de retenção das três classes expiráveis por aplicação em Transactions → Settings → Event monitoring (1 a 730 dias cada).

Enriquecimento de IP

Os eventos contam com o mesmo enriquecimento de IP que as transações (país, ASN, indicadores de VPN/proxy e de data center), e o enriquecimento é resolvido por endereço IP único, nunca por evento. Uma sessão que dispara 200 visualizações de página a partir de um mesmo endereço resolve esse endereço uma única vez. A telemetria de baixo valor vai além: ela só lê o enriquecimento se algum outro evento já tiver resolvido aquele endereço. Ela nunca aciona uma consulta por conta própria. GET /v3/events/enrichment-metrics/ informa o resultado, e o console mostra os mesmos números acima da lista de eventos:

Consultando eventos

Filtros: 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. Filtros com vários valores repetem o parâmetro (?status=A&status=B).

A linha do tempo de um titular

Um vendor_data só é único dentro de um tipo de entidade: o mesmo id pode identificar um usuário e uma empresa, e a Didit os trata como dois titulares diferentes. entity_type indica qual deles você está consultando: individual (o padrão) ou company. Se você omiti-lo em um id de empresa, a resposta traz a linha do tempo da pessoa física, não as duas. Os mesmos filtros da listagem se aplicam. GET /v3/events/{event_uuid}/ acrescenta o payload, o contexto do dispositivo, o enriquecimento de IP, os sinais de risco do titular em cache e cada correspondência de regra com sua evidência, indicando inclusive se cada campo correspondente foi derivado pelo servidor, derivado pelo SDK ou fornecido pelo cliente. DELETE /v3/events/{event_uuid}/delete/ exclui um evento. Ele deixa de ser retornado em todas as consultas, e a exclusão é irreversível.

Próximos passos

Regras sobre eventos

Regras de velocidade, proporção, sequência e correlação sobre os dados de eventos.

Envio de eventos pelo SDK

Capture eventos diretamente do dispositivo com uma credencial com escopo restrito.
Última modificação em 1 de novembro de 2026