Mettre à jour le thème de l'environnement
PATCH /v1/branding · autorisation branding:write
Modifie le brouillon du thème de l'environnement à l'aide d'un merge patch JSON (application/merge-patch+json, RFC 7396). Un jeton défini à null (ou un groupe entier, tel que "light": null) est effacé et hérite à nouveau de la valeur par défaut ; "theme": null efface tous les jetons. Seuls les jetons modifiés sont écrits ; un patch qui ne modifie rien conserve la version. Les valeurs sont vérifiées à l'écriture : les couleurs sont #rgb/#rrggbb, font.size_base entre 14 et 18, radius.card entre 0 et 24, radius.control entre 0 et 16, logo_height entre 24 et 80. logo, favicon et background_image doivent désigner une image de ce type importée avec Importer un actif de marque ; sinon le champ échoue avec asset_not_found. Le contraste est vérifié à la publication.
Requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
If-Match |
en-tête | oui | L'ETag du brouillon tel que lu en dernier ("0" s'il n'a jamais été écrit). Absent : 428 ; obsolète : 412. |
theme |
objet | null | non | BrandingTheme partiel ; chaque champ et chaque groupe peut valoir null. |
Réponse
200 OK avec le brouillon de l'environnement et son ETag. theme ne contient que les jetons définis ; les jetons non définis héritent de la valeur par défaut de la plateforme.
{
"theme": {"mode": "light", "light": {"color": {"primary": "#0a3d91"}}, "logo_height": 40},
"css": null,
"page_template": null,
"updated_at": "2026-10-05T09:30:00.123456Z"
}
Erreurs
| HTTP | code | Quand |
|---|---|---|
| 400 | unknown_field |
Le corps contient un champ inconnu ou n'est pas un objet JSON. |
| 412 | precondition_failed |
If-Match ne correspond pas à la version actuelle du brouillon. |
| 415 | unsupported_media_type |
Le type de contenu n'est pas application/merge-patch+json. |
| 422 | validation_failed |
La valeur d'un jeton est invalide (invalid_value, out_of_range, unknown_token) ; pointer désigne le jeton, par exemple /theme/light/color/primary. |
| 428 | precondition_required |
L'en-tête If-Match est absent. |
| 401 | unauthenticated |
L'identifiant est absent, invalide ou révoqué. |
| 403 | insufficient_permissions |
L'identifiant ne dispose pas de l'autorisation requise. |
| 429 | rate_limited |
La limite de débit a été dépassée ; réessayez après la période indiquée par Retry-After. |
| 503 | service_unavailable |
Une dépendance est temporairement indisponible ; réessayez après la période indiquée par Retry-After. |
Exemple
curl -X PATCH https://api.eu.keenauth.com/v1/branding \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-H 'If-Match: "3"' \
-d '{"theme":{"light":{"color":{"primary":"#0a3d91"}},"radius":null}}'