Un webhook è una chiamata automatica che il nostro sistema effettua a un URL da te configurato ogni volta che si verifica un evento rilevante (ad esempio, una modifica dello stato di un ordine o di un incidente). In questo modo, il tuo sistema può reagire immediatamente a questi cambiamenti.
✅ Sicurezza: firme HMAC (opzionali per ora)
Per convalidare l'autenticità degli eventi ricevuti, ogni webhook può includere una firma digitale nell'intestazione:
- Intestazione : X-Dropea-Hmac-Sha256
- Contenuto : un hash SHA256 generato utilizzando il corpo del POST (payload) e la chiave API corrispondente come chiave segreta.
Ciò consente di verificare che la richiesta provenga effettivamente dal nostro sistema e che non sia stata modificata, in modo simile a quanto fa Shopify con
il suo sistema di webhook .
⚠️ Importante: la convalida della firma è attualmente facoltativa, ma se ne consiglia l'implementazione per rafforzare la sicurezza.
🛍️ Aggiornamento sullo stato dell'ordine
Quando lo stato di un ordine viene aggiornato, il sistema invia una notifica al webhook configurato con la seguente struttura di eventi:
❌ Esempio 1: l'ordine passa da Confermato ad Annullato (da Ricevere)
- {"topic":"order:status_update","order_id":265494,"prev_status":"confermato","new_status":"annullato","updated_at":"29/05/2025 14:14:58"}
✅ Esempio 2: l'ordine passa da In sospeso a Confermato (da ricevere)
- {"topic":"order:status_update","order_id":265494,"prev_status":"in sospeso","new_status":"confermato","updated_at":"29/05/2025 14:14:58"}
🔁 Esempio 3: l'ordine passa da Errore a In attesa (da ricevere)
- {"argomento":"ordine:aggiornamento_stato",
- "order_id":265496,"prev_status":"errore","new_status":"in sospeso","updated_at":"2025-05-29 14:38:05"}
🛠️ Aggiornamento sull'incidenza
📌 Esempio: l'incidente passa da In sospeso a Gestito dal cliente (da ricevere)
- {
- "argomento": "incidenza:aggiornamento_stato",
- "nuovo_stato": "gestito dal cliente",
- "aggiornato_alle": "2025-02-13 14:23:56",
- "prev_status": "in sospeso",
- "incidence_id": 189044
- }
🔄 Esempio 2: l'incidente passa da In sospeso a Soluzione inviata
- {
- "argomento": "incidenza:aggiornamento_stato",
- "incidence_id": 265494,
- "prev_status": "client_managed",
- "nuovo_stato": "invio_risoluzione",
- "aggiornato_alle": "29/05/2025 16:10:45"
- }
✅ Esempio 3: l'incidente passa da Soluzione inviata a Risolto (Payload da ricevere)
- {
- "argomento": "incidenza:aggiornamento_stato",
- "incidence_id": 265494,
- "prev_status": "soluzione_invia",
- "new_status": "risolto",
- "aggiornato_alle": "29/05/2025 17:42:30"
- }
📌 Dettagli per campo