Reemplazar el tema de la aplicación
PUT /v1/branding/applications/{application_id} · permiso branding:write
Reemplaza todo el borrador del tema del ámbito; los tokens ausentes del cuerpo se borran. {"theme":{}} vacía el ámbito. If-Match lleva el ETag de este ámbito (del GET correspondiente), no el del entorno.
Solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
application_id |
ruta | sí | Id app_…. |
If-Match |
encabezado | sí | El ETag del borrador leído por última vez ("0" si nunca se escribió). Ausente: 428; obsoleto: 412. |
theme |
objeto | sí | BrandingTheme completo del ámbito. |
Respuesta
200 OK con el borrador del tema del ámbito y su ETag (cada ámbito tiene su propia versión).
{
"theme": {"logo": "logo_acme", "light": {"color": {"primary": "#0a3d91"}}},
"updated_at": "2026-10-05T09:30:00.123456Z"
}
Errores
| HTTP | código | Cuándo |
|---|---|---|
| 400 | unknown_field |
El cuerpo tiene un campo desconocido o no es un objeto JSON. |
| 404 | not_found |
La aplicación no existe en este entorno o el id está mal formado. |
| 412 | precondition_failed |
If-Match no coincide con la versión actual del borrador. |
| 422 | validation_failed |
Un valor de token no es válido (invalid_value, out_of_range, unknown_token); pointer indica el token, p. ej. /theme/light/color/primary. |
| 428 | precondition_required |
Falta el encabezado If-Match. |
| 401 | unauthenticated |
La credencial falta, no es válida o se ha revocado. |
| 403 | insufficient_permissions |
La credencial no tiene el permiso necesario. |
| 429 | rate_limited |
Se superó el límite de frecuencia; vuelva a intentarlo tras el periodo Retry-After. |
| 503 | service_unavailable |
Una dependencia no está disponible temporalmente; vuelva a intentarlo tras el periodo Retry-After. |
Ejemplo
curl -X PUT https://api.eu.keenauth.com/v1/branding/applications/app_01jbexample0000000000000000 \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H 'If-Match: "1"' \
-d '{"theme":{"logo":"logo_acme","light":{"color":{"primary":"#0a3d91"}}}}'