
# Modifier un client de gestion

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

Modifie un enregistrement de client de gestion avec un JSON merge patch (RFC 7396, `application/merge-patch+json`) : les champs que vous envoyez changent, les autres restent identiques. `If-Match` est obligatoire : sans lui, la requête échoue avec `428` ; avec une version qui ne correspond plus, elle échoue avec `412`. Seule une clé d'API peut appeler ce point de terminaison.

## Requête

| Paramètre | Emplacement | Description |
|---|---|---|
| `application_id` | chemin | Identifiant de l'application (`app_…`). |
| `If-Match` | en-tête | Le `ETag` de la dernière lecture ou écriture. |

Corps : l'un quelconque des champs ci-dessous.

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `permissions` | chaîne[] | non | 1 à 200 autorisations `<resource>:<action>` connues. Remplace la liste dans son ensemble ; ne peut pas être `null`. |
| `allowed_cidrs` | chaîne[] \| null | non | Jusqu'à 20 blocs CIDR. Remplace la liste dans son ensemble ; `null` ou `[]` utilise la liste propre à la clé appelante. |

Un patch qui ne modifie rien laisse l'enregistrement, sa version et le journal d'audit inchangés. Une clé restreinte ne peut pas modifier un enregistrement plus large qu'elle-même (`403 permission_escalation`).

## Réponse

`200 OK`, avec le nouvel `ETag`.

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

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 400 | `unknown_field` | Le patch contient un champ autre que `permissions` et `allowed_cidrs`. |
| 403 | `permission_escalation` | L'enregistrement, ou l'enregistrement après patch, est plus large que la clé appelante. |
| 404 | `not_found` | L'application n'a pas d'enregistrement dans cet environnement. |
| 412 | `precondition_failed` | `If-Match` ne correspond pas à la version actuelle. |
| 415 | `unsupported_media_type` | Le type de contenu n'est pas `application/merge-patch+json`. |
| 422 | `validation_failed` | `permissions` est `null`, vide ou contient une autorisation inconnue, ou un CIDR est invalide. |
| 428 | `precondition_required` | `If-Match` est absent. |

## Exemple

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