Actualizar un permiso
PATCH /v1/permissions/{permission_id} · permiso apis:write
Actualiza un permiso con un JSON merge patch (RFC 7396, application/merge-patch+json): los campos que envíe cambian, los demás se mantienen. Los permisos no tienen versión, así que no hay If-Match.
Solicitud
| Parámetro | En | Descripción |
|---|---|---|
permission_id |
path | Id del permiso (perm_…). |
Cuerpo: cualquiera de los campos siguientes (todos opcionales, al menos uno).
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
value |
cadena | no | Se acepta solo si es igual al valor actual; nunca cambia. |
display_name |
cadena | null | no | Nombre corto que se muestra en la pantalla de consentimiento en lugar del valor del scope. Como máximo 128 caracteres. |
description |
cadena | null | no | Línea de detalle que se muestra debajo del nombre en la pantalla de consentimiento. Como máximo 1024 caracteres. |
consent_text_i18n |
objeto | null | no | Etiqueta de idioma → texto de la pantalla de consentimiento, por ejemplo {"en": "Read your orders"}. Como máximo 30 idiomas, cada texto de 1 a 1024 caracteres, 16 KiB en total. |
sensitivity |
cadena | no | normal (predeterminado) o sensitive. |
display_name, description y consent_text_i18n se borran con null; sensitivity no puede borrarse. consent_text_i18n se reemplaza por completo: los idiomas que omita se eliminan, así que envíe todos los idiomas que desee conservar.
Textos de la pantalla de consentimiento
La pantalla de consentimiento alojada muestra cada scope solicitado así: la entrada de consent_text_i18n para el idioma de la página (etiqueta exacta; si no, su subetiqueta principal), si no, display_name, si no, el value del scope; description se muestra como línea de detalle. Los tres son texto plano. Los caracteres de control (incluidos saltos de línea y tabulaciones), los separadores de línea y de párrafo, y los caracteres de incrustación, anulación y aislamiento bidireccional (U+202A-U+202E, U+2066-U+2069) se rechazan con 422. Los espacios al principio y al final se recortan, y un texto que queda vacío tras el recorte se guarda como null. El HTML no se interpreta: la pantalla de consentimiento lo escapa.
Respuesta
200 OK
{
"id": "perm_01h455vb4pex5vsknk084sn02s",
"api_id": "api_01h455vb4pex5vsknk084sn02q",
"value": "read:orders",
"display_name": "Read orders",
"description": "See your past orders and their status",
"consent_text_i18n": {
"en": "Read your orders",
"tr": "Siparişlerinizi okuyun"
},
"sensitivity": "normal"
}
Errores
| HTTP | código | Cuándo |
|---|---|---|
| 400 | unknown_field |
El parche contiene api_id o un campo desconocido. |
| 404 | not_found |
No existe tal permiso en este entorno. |
| 409 | conflict |
El permiso pertenece a la API del sistema. |
| 415 | unsupported_media_type |
El tipo de contenido no es application/merge-patch+json. |
| 422 | validation_failed |
El parche está vacío, un valor no es válido o no es texto plano, sensitivity es null, o value es distinto (immutable). |
Ejemplo
curl -X PATCH https://api.eu.keenauth.com/v1/permissions/perm_01h455vb4pex5vsknk084sn02s \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-d '{"description":"See your past orders and their status","consent_text_i18n":{"en":"Read your orders","tr":"Siparişlerinizi okuyun"}}'