
# Seitenvorlage setzen

`PUT /v1/branding/page-template` · Berechtigung `branding:write`

Schreibt die Liquid-Seitenvorlage des Umgebungsentwurfs (Plan Startup oder höher, Funktion `branding_page_template`). Die Vorlage muss den Platzhalter `{{ idp.widget }}` genau einmal enthalten; sie wird beim Schreiben in einer Sandbox kompiliert. Eine leere Zeichenkette löscht sie.

## Anfrage

| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| `If-Match` | Header | ja | Das zuletzt gelesene `ETag` des Entwurfs (`"0"`, wenn nie geschrieben). Fehlt: `428`; veraltet: `412`. |
| `page_template` | String | ja | Höchstens 102400 Bytes; `""` löscht. |

## Antwort

`200 OK` mit dem Umgebungsentwurf und seinem `ETag`. `theme` enthält nur gesetzte Tokens; nicht gesetzte erben vom Plattformstandard.

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

## Fehler

| HTTP | Code | Wann |
|---|---|---|
| 400 | `unknown_field` | Der Body enthält ein unbekanntes Feld oder ist kein JSON-Objekt. |
| 403 | `plan_feature_unavailable` | Der Plan enthält die Funktion nicht (`plan_feature_unavailable`, Erweiterungen `feature` und `required_plan`). Entwicklungsumgebungen sind nicht eingeschränkt. |
| 412 | `precondition_failed` | `If-Match` stimmt nicht mit der aktuellen Version des Entwurfs überein. |
| 422 | `validation_failed` | `page_template` fehlt oder ist `null` (`required`) oder zu lang (`too_long`). |
| 422 | `template_forbidden_construct` | Die Vorlage verwendet ein verbotenes Konstrukt (zum Beispiel `{% include %}` oder `<script>`), oder `{{ idp.widget }}` kommt nicht genau einmal vor. |
| 428 | `precondition_required` | Der `If-Match`-Header fehlt. |
| 401 | `unauthenticated` | Die Anmeldeinformation fehlt, ist ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Der Anmeldeinformation fehlt die erforderliche Berechtigung. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; nach der `Retry-After`-Zeit erneut versuchen. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; nach der `Retry-After`-Zeit erneut versuchen. |

## Beispiel

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