Actualizar un cliente de gestión
PATCH /v1/management-clients/{application_id} · permiso management-clients:write
Actualiza un registro de cliente de gestión con un JSON merge patch (RFC 7396, application/merge-patch+json): los campos que envía cambian, los demás se mantienen. If-Match es obligatorio: sin él, la solicitud falla con 428, y con una versión que ya no coincide falla con 412. Solo una clave de API puede llamar a este endpoint.
Solicitud
| Parámetro | En | Descripción |
|---|---|---|
application_id |
ruta | ID de la aplicación (app_…). |
If-Match |
cabecera | El ETag de la última lectura o escritura. |
Cuerpo: cualquiera de los campos siguientes.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
permissions |
string[] | no | De 1 a 200 permisos <resource>:<action> conocidos. Reemplaza la lista completa; no puede ser null. |
allowed_cidrs |
string[] | null | no | Hasta 20 bloques CIDR. Reemplaza la lista completa; null o [] usa la lista propia de la clave que realiza la llamada. |
Un parche que no cambia nada deja el registro, su versión y el registro de auditoría como estaban. Una clave restringida no puede modificar un registro más amplio que ella misma (403 permission_escalation).
Respuesta
200 OK, con el nuevo ETag.
{
"application_id": "app_01h455vb4pex5vsknk084sn02q",
"permissions": ["users:read"],
"allowed_cidrs": ["203.0.113.0/24"]
}
Errores
| HTTP | code | Cuándo |
|---|---|---|
| 400 | unknown_field |
El parche contiene un campo distinto de permissions y allowed_cidrs. |
| 403 | permission_escalation |
El registro, o el registro tras el parche, es más amplio que la clave que realiza la llamada. |
| 404 | not_found |
La aplicación no tiene registro en este entorno. |
| 412 | precondition_failed |
If-Match no coincide con la versión actual. |
| 415 | unsupported_media_type |
El tipo de contenido no es application/merge-patch+json. |
| 422 | validation_failed |
permissions es null, está vacío o contiene un permiso desconocido, o un CIDR no es válido. |
| 428 | precondition_required |
Falta If-Match. |
Ejemplo
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"'