Catàleg d’esdeveniments
Els esdeveniments a nivell d’entitat (
user.status.updated, business.status.updated) també poden activar-se com a conseqüència de l’activitat de transaccions; consulta webhooks d’entitats.
Les aplicacions sandbox no emeten webhooks
transaction.created ni transaction.status.updated. Per provar aquests esdeveniments, utilitza una aplicació de producció o API & Webhooks → Try Webhook a la consola. Els intercanvis sandbox de la Travel Rule sí que emeten webhooks travel_rule.status.updated amb environment: sandbox; utilitza el Didit Test VASP per provar un intercanvi abans de passar a producció.Embolcall
Els webhooks de Didit fan servir un cos pla: els camps de l’esdeveniment es troben al nivell superior, al costat dels camps de l’embolcall, i no hi ha cap objectedata imbricat.
Cada lliurament inclou:
Estructures del payload
transaction.created i transaction.status.updated
Tots dos esdeveniments comparteixen un únic payload: un resum compacte més el bloc action_required (o null):
GET /v3/transactions/{transaction_id}/. Retorna el detall complet (parts, rule_runs, provider_results, travel_rule, cost_breakdown, decision_reason_code), inclosa la raó del canvi d’estat.
transaction_rule_suggestions.created
Aquest esdeveniment fa referència al teu conjunt de regles, no a una transacció concreta, així que no porta cap ID de transacció.
Mai no conté dades personals: només IDs de suggeriments, tipus, títols i recomptes.
Els camps habituals de l’embolcall (
event_id, timestamp, application_id, environment) s’afegeixen al cos.
travel_rule.status.updated
FINISHED, CANCELLED o EXPIRED. Quan una transferència arriba a un d’aquests estats, no s’envia cap més esdeveniment de la Travel Rule per a ella.
Un esdeveniment pot repetir l’estat de l’anterior, per exemple quan un reenviament torna a no trobar cap xarxa i la transferència es queda a COUNTERPARTY_VASP_NOT_FOUND.
rail és INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA, EMAIL, TEST_VASP (una transferència sandbox a la qual ha respost el Didit Test VASP, que també porta test_vasp: true i test_vasp_scenario), o "" mentre no s’ha seleccionat cap xarxa (sempre "" en els registres sunrise).
Quan es crea una transacció, en un registre sunrise, en una consulta TRP entrant o en el tram entrant de la xarxa INTERNAL, Didit envia primer transaction.created i després els esdeveniments travel_rule.status.updated de la transacció.
Una regla que canvia l’estat de la transacció durant aquest pas també pot enviar transaction.status.updated abans de transaction.created.
Un registre sunrise que s’adjunta a una transacció de dipòsit que ja has creat no envia cap transaction.created.
Cada webhook es lliura i es reintenta de manera independent, així que un esdeveniment reintentat pot arribar després d’un de posterior: fes que el teu gestor es basi en transaction_id i torna a llegir la transacció quan necessitis el seu estat actual.
Exemples de trajectòries d’estat
Aprovació simple
Revisió i aprovació posterior
Verificació reforçada
Transferència de la Travel Rule
transaction.created es posa primer a la cua; cada webhook es lliura de manera independent, així que no confiïs en l’ordre d’arribada.
Una transferència enviada per TRUST mai no rep un esdeveniment COMPLETED, perquè TRUST no retorna res que Didit pugui llegir: es queda a AWAITING_COUNTERPARTY fins al termini de confirmació i després acaba a EXPIRED. Amb GTR, VerifyVASP i Sygna Bridge, Didit llegeix la resposta de la contrapart des de la xarxa, i l’esdeveniment la segueix.
Verificació de la signatura
Cada lliurament se signa amb HMAC-SHA256 mitjançant el secret compartit de la destinació i inclou tres capçaleres de signatura més una marca de temps:Reintents i garanties de lliurament
- Davant d’un
5xx,404, temps d’espera o error de connexió, Didit reintenta fins a 2 vegades: aproximadament 1 minut després del primer error i, després, aproximadament 4 minuts més. - Els lliuraments reintentats reutilitzen el mateix
event_id: fes la deduplicació amb aquest camp al teu gestor. - Després del darrer error, el lliurament d’aquest esdeveniment s’atura i la teva organització rep una notificació; les destinacions mai no es desactiven en silenci.
- Respon amb un
2xxde manera ràpida (posa a la cua i després processa): els ACK lents comporten el risc de temps d’espera i de lliuraments duplicats.
Idempotència
Processa cada webhook exactament una vegada desantevent_id al teu propi magatzem de deduplicació. Pot passar que el mateix esdeveniment es torni a lliurar si el teu endpoint confirma lentament o es desconnecta a mitja sol·licitud.
Subscripció
Següents passos
Referència de webhooks
Destinacions, signatura, reintents.
Estats
Màquina d’estats completa.
Guia d'integració
Gestió de webhooks en producció.