# Webhooks

Utilizza Webhooks per ricevere eventi di attività e fatturazione senza polling. Tripo invia payload JSON al tuo endpoint HTTPS quando si verificano eventi sottoscritti.

## Installazione

1. Apri Impostazioni, quindi Webhooks.
2. Aggiungi un endpoint HTTPS, come `https://api.yourapp.com/tripo-webhook`.
3. Seleziona i tipi di eventi che desideri ricevere.
4. Salvare l'endpoint.
5. Copia il segreto della firma e archivialo in modo sicuro. Viene mostrato una sola volta.

## Tipi di eventi

| Evento | Descrizione |
| --- | --- |
| `task.completed` | Un'attività è stata completata con successo. |
| `task.failed` | Un'attività non è riuscita o è stata annullata. |
| `balance.low` | Il saldo del conto è sceso al di sotto della soglia di avviso di credito configurata. |

## Richiedi intestazioni

| Intestazione | Descrizione |
| --- | --- |
| `Tripo-Webhook-Id` | Punto finale Webhook ID. |
| `Tripo-Webhook-Delivery` | Consegna unica ID. Usalo per l'idempotenza. |
| `Tripo-Webhook-Event` | Tipo di evento, ad esempio `task.completed`. |
| `Tripo-Webhook-Signature` | Firma HMAC-SHA256 su `{timestamp}.{raw_body}`. |
| `Content-Type` | Sempre `application/json`. |

## Verifica

1. Analizzare `t` e `v1` da `Tripo-Webhook-Signature`.
2. Calcola HMAC-SHA256 con il segreto della firma su `t + "." + rawBody`.
3. Confrontare il digest esadecimale calcolato con `v1` utilizzando un confronto a tempo costante.
4. Facoltativamente, rifiuta i timestamp più vecchi di circa cinque minuti.

## Migliori pratiche

- Restituisci rapidamente una risposta `2xx`, quindi elabora il lavoro pesante in modo asincrono.
- Verifica ogni payload prima di modificare lo stato dell'applicazione.
- Deduplica eventi utilizzando `Tripo-Webhook-Delivery`.
- Utilizza `balance.low` per avvisare gli utenti prima che la creazione dell'attività fallisca a causa di crediti insufficienti.
