
# Management-Client aktualisieren

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

Aktualisiert einen Management-Client-Datensatz mit einem JSON-Merge-Patch (RFC 7396, `application/merge-patch+json`): Die Felder, die Sie senden, ändern sich, die übrigen bleiben unverändert. `If-Match` ist erforderlich: Ohne es schlägt die Anfrage mit `428` fehl, mit einer nicht mehr passenden Version mit `412`. Nur ein API-Schlüssel kann diesen Endpunkt aufrufen.

## Anfrage

| Parameter | In | Beschreibung |
|---|---|---|
| `application_id` | Pfad | Anwendungs-ID (`app_…`). |
| `If-Match` | Header | Das `ETag` aus dem letzten Lesen oder Schreiben. |

Body: eines oder mehrere der folgenden Felder.

| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| `permissions` | String[] | nein | 1–200 bekannte `<resource>:<action>`-Berechtigungen. Ersetzt die Liste insgesamt; darf nicht `null` sein. |
| `allowed_cidrs` | String[] \| null | nein | Bis zu 20 CIDR-Blöcke. Ersetzt die Liste insgesamt; `null` oder `[]` verwendet die eigene Liste des aufrufenden Schlüssels. |

Ein Patch, der nichts ändert, lässt den Datensatz, seine Version und das Auditprotokoll unverändert. Ein eingeschränkter Schlüssel kann keinen Datensatz ändern, der umfassender ist als er selbst (`403 permission_escalation`).

## Antwort

`200 OK`, mit dem neuen `ETag`.

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

## Fehler

| HTTP | code | Wann |
|---|---|---|
| 400 | `unknown_field` | Der Patch enthält ein anderes Feld als `permissions` und `allowed_cidrs`. |
| 403 | `permission_escalation` | Der Datensatz oder der gepatchte Datensatz ist umfassender als der aufrufende Schlüssel. |
| 404 | `not_found` | Die Anwendung hat in dieser Umgebung keinen Datensatz. |
| 412 | `precondition_failed` | `If-Match` stimmt nicht mit der aktuellen Version überein. |
| 415 | `unsupported_media_type` | Der Content-Type ist nicht `application/merge-patch+json`. |
| 422 | `validation_failed` | `permissions` ist `null`, leer oder enthält eine unbekannte Berechtigung, oder ein CIDR ist ungültig. |
| 428 | `precondition_required` | `If-Match` fehlt. |

## Beispiel

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