
# Webhook-Endpunkt aktualisieren

`PATCH /v1/webhook-endpoints/{endpoint_id}` · Berechtigung `webhook-endpoints:write` · alle Tarife

Ändert einen Endpunkt per JSON Merge Patch (RFC 7396, `Content-Type: application/merge-patch+json`). `If-Match` ist erforderlich; der aktuelle Wert ist der `ETag`-Header von [Einen Webhook-Endpunkt abrufen](get.md). Ein Patch, der nichts ändert, schreibt nichts und behält die Version bei.

- `status` akzeptiert nur `enabled` und `disabled_by_user`. Das Setzen auf `enabled` zählt gegen das Endpunkt-Limit des Tarifs und löscht `failing_since`; so aktivieren Sie einen Endpunkt wieder, der nach Fehlern oder durch Ihren Empfänger deaktiviert wurde.
- `null` leert `description` und `event_schema_versions` (oder einen einzelnen Eintrag: `{"event_schema_versions": {"user.created": null}}`); bei jedem anderen Feld ist das `422 invalid`.
- `event_types` wird insgesamt ersetzt.

## Anfrage

| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| `endpoint_id` | path | ja | Webhook-Endpunkt-ID (`whe_…`). |
| `If-Match` | header | ja | Aktueller `ETag` des Endpunkts (`*` passt auf jede Version). |
| `key`, `url`, `description`, `event_types`, `event_schema_versions`, `payload_mode`, `rate_limit_per_second` | | nein | Wie in [Webhook-Endpunkt hinzufügen](create.md). |
| `status` | string | nein | `enabled` oder `disabled_by_user`. |

```json
{
  "status": "enabled",
  "event_types": ["user.created", "user.updated", "user.deleted"]
}
```

## Antwort

`200 OK` mit dem Endpunkt (wie in [Einen Webhook-Endpunkt abrufen](get.md)) und seinem neuen `ETag`.

## Fehler

| HTTP | code | Wann |
|---|---|---|
| 400 | `malformed_request` | Der Body ist kein JSON-Objekt. |
| 400 | `unknown_field` | Der Patch enthält ein Feld, das oben nicht aufgeführt ist. |
| 403 | `quota_exceeded` | `status: enabled` würde die Anzahl aktivierter Endpunkte des Tarifs überschreiten. |
| 404 | `not_found` | Kein solcher Endpunkt in dieser Umgebung. |
| 409 | `conflict` | Ein anderer Endpunkt der Umgebung hat diesen `key`. |
| 412 | `precondition_failed` | `If-Match` entspricht nicht der aktuellen Version (der Endpunkt wurde seit Ihrem Lesen geändert). |
| 422 | `validation_failed` | Ein Feld ist ungültig (Pointer wie in [Webhook-Endpunkt hinzufügen](create.md)); `/status invalid` bei einem anderen Status als `enabled` oder `disabled_by_user`. |
| 428 | `precondition_required` | `If-Match` fehlt. |
| 401 | `unauthenticated` | Die Anmeldeinformationen fehlen, sind ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Die Anmeldeinformationen haben nicht `webhook-endpoints:write`. |
| 503 | `service_unavailable` | Die Webhook-Verwaltung ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach dem Zeitraum `Retry-After`. |

## Beispiel

```bash
curl -X PATCH https://api.eu.keenauth.com/v1/webhook-endpoints/whe_01k8a3m5q7t9v1w3x5y7z9b2c4 \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "3"' \
  -d '{"status":"enabled"}'
```

CLI: `keenauth webhook-endpoints update whe_01k8a3m5q7t9v1w3x5y7z9b2c4 --status enabled --if-match '"3"'`
