
# Designthema der Umgebung aktualisieren

`PATCH /v1/branding` · Berechtigung `branding:write`

Ändert den Entwurf des Umgebungsdesigns mit einem JSON-Merge-Patch (`application/merge-patch+json`, RFC 7396). Ein auf `null` gesetzter Token (oder eine ganze Gruppe wie `"light": null`) wird gelöscht und erbt wieder; `"theme": null` löscht jeden Token. Nur geänderte Tokens werden geschrieben; ein Patch, der nichts ändert, behält die Version. Werte werden beim Schreiben geprüft: Farben sind `#rgb`/`#rrggbb`, `font.size_base` 14–18, `radius.card` 0–24, `radius.control` 0–16, `logo_height` 24–80. `logo`, `favicon` und `background_image` müssen auf ein Bild dieser Art verweisen, das mit [Ein Brandingasset hochladen](/docs/api/management/branding/upload-asset) hochgeladen wurde; andernfalls schlägt das Feld mit `asset_not_found` fehl. Der Kontrast wird beim Veröffentlichen geprüft.

## Anfrage

| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `If-Match` | header | ja | Das `ETag` des Entwurfs in der zuletzt gelesenen Fassung (`"0"`, falls nie geschrieben). Fehlt es: `428`; ist es veraltet: `412`. |
| `theme` | object \| null | nein | Teilweises `BrandingTheme`; jedes Feld und jede Gruppe darf `null` sein. |

## Antwort

`200 OK` mit dem Umgebungsentwurf und seinem `ETag`. `theme` enthält nur die gesetzten Tokens; nicht gesetzte Tokens erben vom Plattform-Standard.

```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. |
| 412 | `precondition_failed` | `If-Match` stimmt nicht mit der aktuellen Version des Entwurfs überein. |
| 415 | `unsupported_media_type` | Der Inhaltstyp ist nicht `application/merge-patch+json`. |
| 422 | `validation_failed` | Ein Token-Wert ist ungültig (`invalid_value`, `out_of_range`, `unknown_token`); `pointer` benennt den Token, z. B. `/theme/light/color/primary`. |
| 428 | `precondition_required` | Der Header `If-Match` fehlt. |
| 401 | `unauthenticated` | Die Anmeldedaten fehlen, sind ungültig oder wurden widerrufen. |
| 403 | `insufficient_permissions` | Den Anmeldedaten fehlt die erforderliche Berechtigung. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; versuchen Sie es nach der Zeit aus `Retry-After` erneut. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; versuchen Sie es nach der Zeit aus `Retry-After` erneut. |

## Beispiel

```bash
curl -X PATCH https://api.eu.keenauth.com/v1/branding \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "3"' \
  -d '{"theme":{"light":{"color":{"primary":"#0a3d91"}},"radius":null}}'
```
