
# 管理クライアントの更新

`PATCH /v1/management-clients/{application_id}` · 権限 `management-clients:write`

JSON マージパッチ(RFC 7396、`application/merge-patch+json`)で管理クライアントのレコードを更新します。送信したフィールドだけが変更され、それ以外はそのまま残ります。`If-Match` は必須です。指定しないとリクエストは `428` で失敗し、現在のバージョンと一致しない場合は `412` で失敗します。このエンドポイントを呼び出せるのは API キーだけです。

## リクエスト

| パラメータ | 位置 | 説明 |
|---|---|---|
| `application_id` | パス | アプリケーション ID(`app_…`)。 |
| `If-Match` | ヘッダー | 直前の読み取りまたは書き込みで得た `ETag`。 |

本文: 以下のフィールドのいずれか。

| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| `permissions` | string[] | いいえ | 既知の `<resource>:<action>` 形式の権限を 1〜200 個。リスト全体を置き換えます。`null` にはできません。 |
| `allowed_cidrs` | string[] \| null | いいえ | 最大 20 個の CIDR ブロック。リスト全体を置き換えます。`null` または `[]` の場合は、呼び出しキー自身のリストを使います。 |

何も変更しないパッチでは、レコード、そのバージョン、監査ログは変わりません。制限付きキーは、自分より広いレコードを変更できません(`403 permission_escalation`)。

## レスポンス

`200 OK`。新しい `ETag` が付きます。

```json
{
  "application_id": "app_01h455vb4pex5vsknk084sn02q",
  "permissions": ["users:read"],
  "allowed_cidrs": ["203.0.113.0/24"]
}
```

## エラー

| HTTP | code | 発生条件 |
|---|---|---|
| 400 | `unknown_field` | パッチに `permissions` と `allowed_cidrs` 以外のフィールドが含まれています。 |
| 403 | `permission_escalation` | レコード、またはパッチ適用後のレコードが呼び出しキーより広い権限を持っています。 |
| 404 | `not_found` | このアプリケーションにはこの環境でレコードがありません。 |
| 412 | `precondition_failed` | `If-Match` が現在のバージョンと一致しません。 |
| 415 | `unsupported_media_type` | コンテンツタイプが `application/merge-patch+json` ではありません。 |
| 422 | `validation_failed` | `permissions` が `null`、空、または未知の権限を含む、あるいは CIDR が不正です。 |
| 428 | `precondition_required` | `If-Match` がありません。 |

## 例

```bash
curl -X PATCH https://api.eu.keenauth.com/v1/management-clients/app_01h455vb4pex5vsknk084sn02q \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "3f2a9c0d7b1e4a6f8c5d2e1b0a9f8e7d"' \
  -d '{"permissions":["users:read"]}'
```

CLI: `keenauth management-clients update app_01h455vb4pex5vsknk084sn02q --permissions users:read --if-match '"3f2a9c0d7b1e4a6f8c5d2e1b0a9f8e7d"'`
