
# ページテンプレートを設定

`PUT /v1/branding/page-template` · 権限 `branding:write`

環境の下書きの Liquid ページテンプレートを書き込みます (Startup 以上のプラン、機能 `branding_page_template`)。テンプレートには `{{ idp.widget }}` スロットがちょうど 1 回含まれている必要があり、書き込み時にサンドボックスでコンパイルされます。空文字列で消去します。

## リクエスト

| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
| `If-Match` | ヘッダー | はい | 最後に読み取った下書きの `ETag` (未書き込みなら `"0"`)。ない場合は `428`、古い場合は `412`。 |
| `page_template` | 文字列 | はい | 最大 102400 バイト。`""` で消去。 |

## レスポンス

`200 OK` と環境の下書きおよび `ETag`。`theme` には設定済みのトークンのみが含まれ、未設定のトークンはプラットフォーム既定値を継承します。

```json
{
  "theme": {"mode": "light", "light": {"color": {"primary": "#0a3d91"}}, "logo_height": 40},
  "css": null,
  "page_template": null,
  "updated_at": "2026-10-05T09:30:00.123456Z"
}
```

## エラー

| HTTP | コード | 概要 |
|---|---|---|
| 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 }}` がちょうど 1 回出現しません。 |
| 428 | `precondition_required` | `If-Match` ヘッダーがありません。 |
| 401 | `unauthenticated` | 認証情報がない、無効、または失効しています。 |
| 403 | `insufficient_permissions` | 認証情報に必要な権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` の期間後に再試行してください。 |
| 503 | `service_unavailable` | 依存サービスが一時的に利用できません。`Retry-After` の期間後に再試行してください。 |

## 例

```bash
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>"}'
```
