
# Web kancası ucunu güncelle

`PATCH /v1/webhook-endpoints/{endpoint_id}` · izin `webhook-endpoints:write` · bütün planlar

Ucu JSON birleştirme yamasıyla (RFC 7396, `Content-Type: application/merge-patch+json`) değiştirir. `If-Match` zorunludur; güncel değer [Web kancası ucunu getir](get.md) yanıtının `ETag` başlığıdır. Hiçbir şeyi değiştirmeyen yama yazılmaz, sürüm artmaz.

- `status` yalnız `enabled` ve `disabled_by_user` kabul eder. `enabled` planın etkin uç sınırına sayılır ve `failing_since`'i siler; başarısızlık ya da alıcı nedeniyle kapanmış uç böyle yeniden açılır.
- `null`, `description` ve `event_schema_versions`'ı (ya da tek girdiyi: `{"event_schema_versions": {"user.created": null}}`) temizler; diğer alanlarda `422 invalid` olur.
- `event_types` bütünüyle değişir.

## İstek

| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `endpoint_id` | yol | evet | Web kancası ucu kimliği (`whe_…`). |
| `If-Match` | başlık | evet | Ucun güncel `ETag`'i (`*` her sürümle eşleşir). |
| `key`, `url`, `description`, `event_types`, `event_schema_versions`, `payload_mode`, `rate_limit_per_second` | | hayır | [Web kancası ucu ekle](create.md) sayfasındaki gibi. |
| `status` | string | hayır | `enabled` ya da `disabled_by_user`. |

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

## Yanıt

`200 OK`: uç ([Web kancası ucunu getir](get.md) sayfasındaki gibi) ve yeni `ETag`.

## Hatalar

| HTTP | code | Ne zaman |
|---|---|---|
| 400 | `malformed_request` | Gövde JSON nesnesi değil. |
| 400 | `unknown_field` | Yamada yukarıda olmayan bir alan var. |
| 403 | `quota_exceeded` | `status: enabled` planın etkin uç sayısını aşar. |
| 404 | `not_found` | Bu ortamda böyle bir uç yok. |
| 409 | `conflict` | Ortamın başka bir ucu bu `key`'i kullanıyor. |
| 412 | `precondition_failed` | `If-Match` güncel sürümle eşleşmiyor (uç siz okuduktan sonra değişti). |
| 422 | `validation_failed` | Bir alan geçersiz (işaretçiler [Web kancası ucu ekle](create.md) sayfasındaki gibi); `enabled` ya da `disabled_by_user` dışındaki durum için `/status invalid`. |
| 428 | `precondition_required` | `If-Match` yok. |
| 401 | `unauthenticated` | Kimlik bilgisi yok, geçersiz ya da iptal edilmiş. |
| 403 | `insufficient_permissions` | Kimlik bilgisinde `webhook-endpoints:write` yok. |
| 503 | `service_unavailable` | Web kancası yönetimi geçici olarak kullanılamıyor; `Retry-After` süresinden sonra yeniden deneyin. |

## Örnek

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