
# Ottieni un endpoint webhook

`GET /v1/webhook-endpoints/{endpoint_id}` · permesso `webhook-endpoints:read` · tutti i piani

Restituisce un endpoint webhook. L'header `ETag` è la versione dell'endpoint e il valore di `If-Match` per [aggiornamento](update.md) ed [eliminazione](delete.md). Il segreto di firma non viene mai restituito qui.

## Richiesta

| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| `endpoint_id` | path | sì | ID dell'endpoint webhook (`whe_…`). |

## Risposta

`200 OK` con l'endpoint.

| Campo | Descrizione |
|---|---|
| `id` | ID dell'endpoint (`whe_…`). |
| `key` | Chiave stabile, unica nell'ambiente. |
| `url` | URL del destinatario. |
| `description` | Testo libero; stringa vuota se assente. |
| `event_types` | Tipi di evento del catalogo selezionati; vuoto significa tutti i tipi tranne quelli ad alto volume. |
| `event_schema_versions` | Sostituzioni della versione dello schema per tipo di evento. |
| `payload_mode` | `thin` oppure `full`. |
| `status` | `enabled`, `disabled_by_user`, `disabled_by_failure` (nessuna consegna riuscita per 5 giorni e almeno 10 consegne abbandonate) oppure `disabled_by_receiver` (il destinatario ha risposto `410 Gone`). Riabilita con [aggiornamento](update.md) e `"status": "enabled"`; usa il replay per gli eventi del periodo disabilitato. |
| `rate_limit_per_second` | Limite di consegne al secondo per questo endpoint. |
| `previous_secret_expires_at` | Dopo una rotazione, la fine del periodo in cui il vecchio segreto firma ancora le consegne; altrimenti `null`. |
| `last_success_at` | Ultima consegna riuscita, oppure `null`. |
| `failing_since` | Inizio delle consegne fallite consecutive, oppure `null`. |
| `version` | Versione; coincide con l'header `ETag`. |
| `created_at`, `updated_at` | Timestamp. |

```json
{
  "id": "whe_01k8a3m5q7t9v1w3x5y7z9b2c4",
  "key": "crm-sync",
  "url": "https://hooks.example.com/keenauth",
  "description": "CRM sync",
  "event_types": ["user.created", "user.updated"],
  "event_schema_versions": {"user.created": 1},
  "payload_mode": "thin",
  "status": "enabled",
  "rate_limit_per_second": 50,
  "previous_secret_expires_at": null,
  "last_success_at": "2026-10-26T09:12:00Z",
  "failing_since": null,
  "version": 3,
  "created_at": "2026-10-26T09:00:00Z",
  "updated_at": "2026-10-26T10:00:00Z"
}
```

## Errori

| HTTP | code | Quando |
|---|---|---|
| 404 | `not_found` | Nessun endpoint del genere in questo ambiente (anche per un endpoint di un altro ambiente o un ID malformato). |
| 401 | `unauthenticated` | La credenziale è mancante, non valida o revocata. |
| 403 | `insufficient_permissions` | La credenziale non ha `webhook-endpoints:read`. |
| 429 | `rate_limited` | È stato superato il limite di richieste; riprova dopo il periodo di `Retry-After`. |
| 503 | `service_unavailable` | L'amministrazione dei webhook è temporaneamente non disponibile; riprova dopo il periodo di `Retry-After`. |

## Esempio

```bash
curl -i https://api.eu.keenauth.com/v1/webhook-endpoints/whe_01k8a3m5q7t9v1w3x5y7z9b2c4 \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth webhook-endpoints get whe_01k8a3m5q7t9v1w3x5y7z9b2c4`
