조직 테마 교체
PUT /v1/branding/organizations/{org_id} · 권한 branding:write
범위의 테마 초안 전체를 교체합니다. 본문에 없는 토큰은 지워집니다. {"theme":{}}는 범위를 비웁니다. If-Match에는 환경이 아니라 이 범위의 ETag(해당 GET에서 받은 값)를 보냅니다. logo, light.color.primary, dark.color.primary 이외의 토큰은 422(token_not_allowed_in_scope)로 실패합니다.
요청
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
org_id |
경로 | 예 | org_… ID. |
If-Match |
헤더 | 예 | 마지막으로 읽은 초안의 ETag (한 번도 쓰지 않았다면 "0"). 없으면 428, 오래되었으면 412. |
theme |
객체 | 예 | 범위의 전체 BrandingTheme. |
응답
200 OK와 범위의 테마 초안 및 ETag (범위마다 별도 버전이 있습니다).
{
"theme": {"logo": "logo_acme", "light": {"color": {"primary": "#0a3d91"}}},
"updated_at": "2026-10-05T09:30:00.123456Z"
}
오류
| HTTP | code | 조건 |
|---|---|---|
| 400 | unknown_field |
본문에 알 수 없는 필드가 있거나 JSON 객체가 아닙니다. |
| 404 | not_found |
ID가 올바른 org_… ID가 아닙니다. |
| 412 | precondition_failed |
If-Match가 초안의 현재 버전과 일치하지 않습니다. |
| 422 | validation_failed |
토큰 값이 유효하지 않습니다(invalid_value, out_of_range, unknown_token). pointer가 토큰을 가리킵니다(예: /theme/light/color/primary). |
| 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/organizations/org_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"}}}}'