Définir le modèle de page
PUT /v1/branding/page-template · permission branding:write
Écrit le modèle de page Liquid du brouillon de l'environnement (plan Startup ou supérieur, fonctionnalité branding_page_template). Le modèle doit contenir l'emplacement {{ idp.widget }} exactement une fois ; il est compilé dans un bac à sable à l'écriture. Une chaîne vide l'efface.
Requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
If-Match |
en-tête | oui | L'ETag du brouillon lu en dernier ("0" s'il n'a jamais été écrit). Absent : 428 ; périmé : 412. |
page_template |
chaîne | oui | 102400 octets au plus ; "" efface. |
Réponse
200 OK avec le brouillon de l'environnement et son ETag. theme ne contient que les jetons définis ; les autres 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. |
| 403 | plan_feature_unavailable |
Le plan n'inclut pas la fonctionnalité (plan_feature_unavailable, extensions feature et required_plan). Les environnements de développement ne sont pas restreints. |
| 412 | precondition_failed |
If-Match ne correspond pas à la version actuelle du brouillon. |
| 422 | validation_failed |
page_template est absent ou null (required), ou trop long (too_long). |
| 422 | template_forbidden_construct |
Le modèle utilise une construction interdite (par exemple {% include %} ou <script>), ou {{ idp.widget }} n'apparaît pas exactement une fois. |
| 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 n'a pas la permission requise. |
| 429 | rate_limited |
La limite de débit est dépassée ; réessayez après le délai Retry-After. |
| 503 | service_unavailable |
Une dépendance est temporairement indisponible ; réessayez après le délai Retry-After. |
Exemple
curl -X PUT https://api.eu.keenauth.com/v1/branding/page-template \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H 'If-Match: "3"' \
-d '{"page_template":"<div class=\"shell\">{{ idp.widget }}</div>"}'