Registra solo gli eventi di cui hai bisogno
Crea un endpoint conPOST /v3/webhooks. Iscriviti solo agli eventi documentati che guidano la tua integrazione. Questo esempio usa transfer.state_changed.
Create webhook endpoint
data.id della risposta come WEBHOOK_ID. Richiedi un URL del portale a GET /v3/webhooks/portal con una chiave API che ha webhooks:write, recupera il signing secret di questo endpoint e conservalo separatamente dalla chiave API in un secret manager. L’URL del portale concede l’accesso da solo e scade dopo un’ora, quindi richiedine uno nuovo ogni volta e non salvarlo né condividerlo.
Il portale raggruppa gli eventi v3 per risorsa: Customers, Capabilities, Accounts, Recipients, Transfers e API. Ogni evento mostra il proprio schema di payload e un esempio. Gli eventi legacy sono contrassegnati come deprecati ed elencati in un gruppo Legacy separato. Se il tuo endpoint è già iscritto a un evento legacy, continua a riceverlo. Scegli nomi di evento v3 per le nuove iscrizioni.
Modifica gli eventi di un endpoint
Leggi un endpoint conGET /v3/webhooks/{webhookId}. La risposta ha la stessa struttura events di GET /v3/webhooks. Non include mai il signing secret. Le letture richiedono webhooks:read e restituiscono 404 not_found per un ID endpoint sconosciuto.
Aggiorna l’endpoint con PATCH /v3/webhooks/{webhookId}. Invia un header Idempotency-Key. Gli aggiornamenti richiedono webhooks:write.
- Invia solo
eventsper mantenere l’URL corrente. - Invia solo
urlper mantenere la selezione di eventi corrente. eventssostituisce l’intera selezione. Leggi prima l’endpoint e includi ogni evento di cui hai ancora bisogno.- Le nuove iscrizioni devono usare nomi di evento v3.
- Puoi mantenere un nome di evento legacy se l’endpoint è già iscritto a quell’evento. L’aggiunta di un nuovo nome legacy restituisce
400 validation_error.
Request body
Verifica prima di parsare
Swipelux consegna le nuove integrazioni webhook tramite Svix. Verifica il body grezzo della richiesta con il signing secret dell’endpoint e questi header:svix-idsvix-timestampsvix-signature
Verify signature
Persisti, conferma e poi processa
Imposta un vincolo di univocità sull’id dell’envelope. Persisti l’envelope verificato, restituisci 2xx prontamente, poi processalo in modo asincrono.
Se l’ID evento esiste già, conferma la consegna senza ripetere side effect già completati. Riprendi il lavoro locale pending o fallito tramite la tua coda di retry. Non usare il campo attempt dell’envelope come chiave di deduplicazione o come contatore di retry di trasporto.
Rileggi lo stato corrente
L’ordine dei webhook non è una cronologia autorevole della risorsa. Usaresource.type e resource.id per localizzare l’oggetto, poi recupera il suo stato corrente prima di aggiornare il tuo sistema.
Per un evento di transfer, chiama GET /v3/transfers/{transferId}:
Refetch transfer
Recupera le consegne
UsaGET /v3/webhooks/portal per aprire i log di consegna. Con webhooks:write puoi anche ritentare le consegne fallite o avviare un replay manuale. Una chiave con il solo webhooks:read apre un portale che mostra le consegne ma non può ritentarle, riprodurle né rivelare i signing secret.
Ogni replay deve passare per la stessa verifica di firma e per la stessa inbox durevole. Per recuperare dopo un downtime, ripeti la finestra interessata e rileggi ogni risorsa referenziata. Gli ID evento completati restano no-op; i record incompleti riprendono in modo asincrono.
Successivamente, verifica in sandbox le consegne duplicate e fuori ordine, poi completa la checklist Go live.