
# Riproduci eventi verso un endpoint webhook

`POST /v1/webhook-endpoints/{endpoint_id}:replay` · autorizzazione `webhook-endpoints:write` · tutti i piani

Mette di nuovo in coda gli eventi di `[from, to)` degli ultimi 30 giorni, per esempio gli eventi di un periodo in cui l'endpoint era disabilitato. Vengono inviati solo i tipi di evento dell'endpoint, a meno che `types` non li restringa. Ogni consegna riprodotta mantiene il `webhook-id` dell'evento, quindi un destinatario che elimina i duplicati tramite `webhook-id` elabora ogni evento una sola volta; `replay_no` della consegna aumenta di uno.

## Richiesta

| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| `endpoint_id` | path | sì | ID dell'endpoint webhook (`whe_…`). |
| `from` | date-time | sì | Inizio dell'intervallo (incluso), entro gli ultimi 30 giorni. |
| `to` | date-time | sì | Fine dell'intervallo (esclusa), successiva a `from`. |
| `types` | string[] | no | Tipi di evento da riprodurre; vuoto o assente significa i tipi dell'endpoint. |
| `Idempotency-Key` | header | no | Restituisce la risposta per una richiesta ripetuta con la stessa chiave, senza mettere di nuovo in coda. |

```json
{
  "from": "2026-10-20T00:00:00Z",
  "to": "2026-10-21T00:00:00Z",
  "types": ["user.created"]
}
```

## Risposta

`200 OK` con il numero di consegne messe in coda.

```json
{
  "enqueued": 42
}
```

## Errori

| HTTP | code | Quando |
|---|---|---|
| 400 | `unknown_field` | Il corpo contiene un campo non elencato sopra. |
| 404 | `not_found` | Nessun endpoint con questo ID in questo ambiente. |
| 415 | `unsupported_media_type` | Il corpo manca oppure non è `application/json`. |
| 422 | `validation_failed` | `/from required`, `/to required`, oppure una regola sull'intervallo: `to` non successivo a `from`, oppure più vecchio di 30 giorni. |
| 401 | `unauthenticated` | La credenziale è mancante, non valida o revocata. |
| 403 | `insufficient_permissions` | La credenziale non ha `webhook-endpoints:write`. |
| 503 | `service_unavailable` | Il replay non è ancora disponibile in questa regione, oppure la gestione dei webhook è temporaneamente non disponibile; riprova dopo `Retry-After`. |

## Esempio

```bash
curl -X POST https://api.eu.keenauth.com/v1/webhook-endpoints/whe_01k8a3m5q7t9v1w3x5y7z9b2c4:replay \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7a1c3e5f-9b2d-4f6a-8c0e-2b4d6f8a0c2e" \
  -d '{"from":"2026-10-20T00:00:00Z","to":"2026-10-21T00:00:00Z"}'
```

CLI (il corpo viene letto dallo standard input oppure da un file (`--data @replay.json`)):

```bash
echo '{"from":"2026-10-20T00:00:00Z","to":"2026-10-21T00:00:00Z"}' | keenauth webhook-endpoints replay whe_01k8a3m5q7t9v1w3x5y7z9b2c4 --data -
```
