페이지 템플릿 설정
PUT /v1/branding/page-template · 권한 branding:write
환경 초안의 Liquid 페이지 템플릿을 씁니다(Startup 이상 플랜, 기능 branding_page_template). 템플릿에는 {{ idp.widget }} 슬롯이 정확히 한 번 있어야 하며, 쓰기 시 샌드박스에서 컴파일됩니다. 빈 문자열은 지웁니다.
요청
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
If-Match |
헤더 | 예 | 마지막으로 읽은 초안의 ETag (한 번도 쓰지 않았다면 "0"). 없으면 428, 오래되었으면 412. |
page_template |
문자열 | 예 | 최대 102400바이트. ""은 지웁니다. |
응답
200 OK와 환경 초안 및 ETag. theme에는 설정된 토큰만 있으며, 설정되지 않은 토큰은 플랫폼 기본값을 상속합니다.
{
"theme": {"mode": "light", "light": {"color": {"primary": "#0a3d91"}}, "logo_height": 40},
"css": null,
"page_template": null,
"updated_at": "2026-10-05T09:30:00.123456Z"
}
오류
| HTTP | code | 조건 |
|---|---|---|
| 400 | unknown_field |
본문에 알 수 없는 필드가 있거나 JSON 객체가 아닙니다. |
| 403 | plan_feature_unavailable |
플랜에 기능이 포함되어 있지 않습니다(plan_feature_unavailable, 확장 feature와 required_plan). 개발 환경은 제한되지 않습니다. |
| 412 | precondition_failed |
If-Match가 초안의 현재 버전과 일치하지 않습니다. |
| 422 | validation_failed |
page_template가 없거나 null이거나(required) 너무 깁니다(too_long). |
| 422 | template_forbidden_construct |
템플릿이 금지된 구문(예: {% include %} 또는 <script>)을 사용하거나 {{ idp.widget }}이 정확히 한 번 나타나지 않습니다. |
| 428 | precondition_required |
If-Match 헤더가 없습니다. |
| 401 | unauthenticated |
자격 증명이 없거나 유효하지 않거나 폐기되었습니다. |
| 403 | insufficient_permissions |
자격 증명에 필요한 권한이 없습니다. |
| 429 | rate_limited |
속도 제한을 초과했습니다. Retry-After 기간 후에 다시 시도하세요. |
| 503 | service_unavailable |
종속 서비스를 일시적으로 사용할 수 없습니다. Retry-After 기간 후에 다시 시도하세요. |
예제
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>"}'