
# Webhook エンドポイントを更新する

`PATCH /v1/webhook-endpoints/{endpoint_id}` · 権限 `webhook-endpoints:write` · すべてのプラン

JSON マージパッチ (RFC 7396、`Content-Type: application/merge-patch+json`) を使用してエンドポイントを変更します。`If-Match` は必須です。現在の値は [Webhook エンドポイントを取得する](get.md) の `ETag` ヘッダーです。何も変更しないパッチは、何も書き込まず、バージョンも維持します。

- `status` には `enabled` と `disabled_by_user` のみを指定できます。`enabled` を設定すると、プランの有効エンドポイント数の上限に計上され、`failing_since` がクリアされます。失敗後や受信側によって無効化されたエンドポイントを再度有効にするには、この方法を使用します。
- `null` を指定すると `description` と `event_schema_versions` がクリアされます (1 つのエントリだけをクリアする場合は `{"event_schema_versions": {"user.created": null}}` のように指定します)。それ以外のフィールドでは、`422 invalid` になります。
- `event_types` は全体が置き換えられます。

## リクエスト

| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
| `endpoint_id` | パス | はい | Webhook エンドポイント ID (`whe_…`)。 |
| `If-Match` | ヘッダー | はい | エンドポイントの現在の `ETag` (`*` を指定すると、任意のバージョンに一致します)。 |
| `key`, `url`, `description`, `event_types`, `event_schema_versions`, `payload_mode`, `rate_limit_per_second` | | いいえ | [Webhook エンドポイントを追加する](create.md) と同じです。 |
| `status` | 文字列 | いいえ | `enabled` または `disabled_by_user`。 |

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

## レスポンス

`200 OK` で、エンドポイント ([Webhook エンドポイントを取得する](get.md) と同じ形式) とその新しい `ETag` を返します。

## エラー

| HTTP | code | 発生条件 |
|---|---|---|
| 400 | `malformed_request` | ボディが JSON オブジェクトではありません。 |
| 400 | `unknown_field` | パッチに、上記に記載されていないフィールドが含まれています。 |
| 403 | `quota_exceeded` | `status: enabled` を設定すると、プランの有効エンドポイント数の上限を超えます。 |
| 404 | `not_found` | この環境に該当するエンドポイントが存在しません。 |
| 409 | `conflict` | 同じ環境内の別のエンドポイントが、この `key` を使用しています。 |
| 412 | `precondition_failed` | `If-Match` が現在のバージョンと一致しません (読み取り後にエンドポイントが変更されています)。 |
| 422 | `validation_failed` | フィールドが無効です (ポインターは [Webhook エンドポイントを追加する](create.md) と同じです)。`enabled` または `disabled_by_user` 以外の status の場合は `/status invalid` になります。 |
| 428 | `precondition_required` | `If-Match` がありません。 |
| 401 | `unauthenticated` | 認証情報が存在しない、無効である、または取り消されています。 |
| 403 | `insufficient_permissions` | 認証情報に `webhook-endpoints:write` の権限がありません。 |
| 503 | `service_unavailable` | Webhook の管理機能が一時的に利用できません。`Retry-After` の時間を置いてから再試行してください。 |

## 例

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