
# Webhook-Endpunkt abrufen

`GET /v1/webhook-endpoints/{endpoint_id}` · Berechtigung `webhook-endpoints:read` · alle Tarife

Gibt einen Webhook-Endpunkt zurück. Der Header `ETag` ist die Version des Endpunkts und der `If-Match`-Wert für [Aktualisieren](update.md) und [Löschen](delete.md). Das Signiergeheimnis wird hier nie zurückgegeben.

## Anfrage

| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `endpoint_id` | path | ja | ID des Webhook-Endpunkts (`whe_…`). |

## Antwort

`200 OK` mit dem Endpunkt.

| Feld | Beschreibung |
|---|---|
| `id` | ID des Endpunkts (`whe_…`). |
| `key` | Stabiler Schlüssel, in der Umgebung eindeutig. |
| `url` | Empfänger-URL. |
| `description` | Freitext; leere Zeichenkette, wenn keiner vorhanden ist. |
| `event_types` | Ausgewählte Ereignistypen aus dem Katalog; leer bedeutet alle Typen außer den umfangreichen. |
| `event_schema_versions` | Überschreibungen von Ereignistyp → Schemaversion. |
| `payload_mode` | `thin` oder `full`. |
| `status` | `enabled`, `disabled_by_user`, `disabled_by_failure` (keine erfolgreiche Zustellung seit 5 Tagen und mindestens 10 aufgegebene Zustellungen) oder `disabled_by_receiver` (der Empfänger hat mit `410 Gone` geantwortet). Reaktivieren Sie mit [Aktualisieren](update.md) und `"status": "enabled"`; verwenden Sie Wiederholung für die Ereignisse des deaktivierten Zeitraums. |
| `rate_limit_per_second` | Obergrenze der Zustellungsrate für diesen Endpunkt. |
| `previous_secret_expires_at` | Nach einer Rotation das Ende des Zeitraums, in dem das alte Geheimnis noch Zustellungen signiert; sonst `null`. |
| `last_success_at` | Letzte erfolgreiche Zustellung oder `null`. |
| `failing_since` | Beginn ununterbrochener fehlgeschlagener Zustellungen oder `null`. |
| `version` | Version; entspricht dem Header `ETag`. |
| `created_at`, `updated_at` | Zeitstempel. |

```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"
}
```

## Fehler

| HTTP | Code | Wann |
|---|---|---|
| 404 | `not_found` | Kein solcher Endpunkt in dieser Umgebung (auch bei einem Endpunkt einer anderen Umgebung oder einer fehlerhaften ID). |
| 401 | `unauthenticated` | Die Berechtigungsnachweise fehlen, sind ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Die Berechtigungsnachweise enthalten nicht `webhook-endpoints:read`. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach der Zeit aus `Retry-After`. |
| 503 | `service_unavailable` | Die Verwaltung von Webhooks ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach der Zeit aus `Retry-After`. |

## Beispiel

```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`
