Catalogo degli eventi
Gli eventi a livello di entità (
user.status.updated, business.status.updated) possono anche essere inviati come conseguenza dell’attività sulle transazioni: vedi webhook delle entità.
Le applicazioni sandbox non inviano webhook
transaction.created o transaction.status.updated. Per testare questi eventi, usa un’applicazione di produzione oppure API & Webhooks → Try Webhook nella console. Gli scambi Travel Rule in sandbox inviano webhook travel_rule.status.updated con environment: sandbox; usa il Didit Test VASP per testare uno scambio prima di andare in produzione.Busta
I webhook di Didit usano un corpo piatto: i campi dell’evento si trovano al primo livello, accanto ai campi della busta, e non esiste un oggettodata annidato.
Ogni consegna contiene:
Strutture del payload
transaction.created e transaction.status.updated
Entrambi gli eventi condividono un unico payload: un riepilogo sintetico più il blocco action_required (oppure null):
GET /v3/transactions/{transaction_id}/. La risposta contiene il dettaglio completo (parti, rule_runs, provider_results, travel_rule, cost_breakdown, decision_reason_code), incluso il motivo della variazione di stato.
transaction_rule_suggestions.created
Questo evento riguarda il tuo insieme di regole, non una singola transazione, quindi non contiene un ID di transazione.
Non contiene mai dati personali: solo ID dei suggerimenti, tipi, titoli e conteggi.
I consueti campi della busta (
event_id, timestamp, application_id, environment) vengono aggiunti al corpo.
travel_rule.status.updated
FINISHED, CANCELLED o EXPIRED; una volta che un trasferimento raggiunge uno di questi stati, non vengono più inviati eventi Travel Rule per esso.
Un evento può ripetere lo stato del precedente, ad esempio quando un nuovo invio non trova di nuovo alcun canale e il trasferimento resta in COUNTERPARTY_VASP_NOT_FOUND.
rail può essere INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA, EMAIL, TEST_VASP (un trasferimento in sandbox a cui ha risposto il Didit Test VASP, che riporta anche test_vasp: true e test_vasp_scenario), oppure "" finché non è selezionato alcun canale (sempre "" nelle registrazioni sunrise).
Alla creazione di una transazione, di una registrazione sunrise, di una richiesta TRP in entrata o della componente in entrata sul canale INTERNAL, Didit invia prima transaction.created e, dopo, gli eventi travel_rule.status.updated della transazione.
Una regola che modifica lo stato della transazione durante questo passaggio può anche inviare transaction.status.updated prima di transaction.created.
Una registrazione sunrise che si collega a una transazione di deposito già creata da te non invia alcun transaction.created.
Ogni webhook viene consegnato e riprovato in modo indipendente, quindi un evento riprovato può arrivare dopo uno successivo: usa transaction_id come chiave nel tuo gestore e rileggi la transazione quando ti serve lo stato attuale.
Esempi di percorsi di stato
Approvazione semplice
Revisione e poi approvazione
Verifica rafforzata (con passaggio aggiuntivo)
Trasferimento Travel Rule
transaction.created viene messo in coda per primo; ogni webhook viene consegnato in modo indipendente, quindi non fare affidamento sull’ordine di arrivo.
Un trasferimento inviato tramite TRUST non riceve mai un evento COMPLETED, perché TRUST non restituisce nulla che Didit possa leggere: il trasferimento resta in AWAITING_COUNTERPARTY fino alla scadenza per la conferma e poi termina in EXPIRED. Con GTR, VerifyVASP e Sygna Bridge, Didit legge la risposta della controparte dalla rete e l’evento segue quella risposta.
Verifica della firma
Ogni consegna è firmata con HMAC-SHA256 usando il segreto condiviso della destinazione e include tre intestazioni di firma più un timestamp:Nuovi tentativi e garanzie di consegna
- In caso di
5xx,404, timeout o errore di connessione, Didit ritenta fino a 2 volte: circa 1 minuto dopo il primo errore, poi altri 4 minuti circa dopo. - Le consegne ritentate riutilizzano lo stesso
event_id: usalo per deduplicare nel tuo gestore. - Dopo l’ultimo errore, la consegna di quell’evento si interrompe e la tua organizzazione viene notificata; le destinazioni non vengono mai disattivate in silenzio.
- Restituisci un
2xxrapidamente (accoda, poi elabora): ACK lenti rischiano timeout e consegne duplicate.
Idempotenza
Elabora ogni webhook esattamente una volta memorizzandoevent_id nel tuo archivio di deduplica. La riconsegna dello stesso evento è possibile quando il tuo endpoint invia l’ACK lentamente o si disconnette a metà di una richiesta.
Sottoscrizione
Passaggi successivi
Riferimento webhook
Destinazioni webhook, firma, nuovi tentativi.
Stati
Macchina a stati completa.
Guida all'integrazione
Gestione dei webhook in produzione.