
# Sostituire il tema dell'applicazione

`PUT /v1/branding/applications/{application_id}` · permesso `branding:write`

Sostituisce l'intera bozza del tema dell'ambito; i token assenti dal corpo vengono cancellati. `{"theme":{}}` svuota l'ambito. `If-Match` contiene l'`ETag` di questo ambito (dal GET corrispondente), non quello dell'ambiente.

## Richiesta

| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| `application_id` | percorso | sì | Id `app_…`. |
| `If-Match` | intestazione | sì | L'`ETag` della bozza letto per ultimo (`"0"` se mai scritta). Assente: `428`; obsoleto: `412`. |
| `theme` | oggetto | sì | `BrandingTheme` completo dell'ambito. |

## Risposta

`200 OK` con la bozza del tema dell'ambito e il suo `ETag` (ogni ambito ha la propria versione).

```json
{
  "theme": {"logo": "logo_acme", "light": {"color": {"primary": "#0a3d91"}}},
  "updated_at": "2026-10-05T09:30:00.123456Z"
}
```

## Errori

| HTTP | code | Quando |
|---|---|---|
| 400 | `unknown_field` | Il corpo contiene un campo sconosciuto o non è un oggetto JSON. |
| 404 | `not_found` | L'applicazione non esiste in questo ambiente o l'id non è valido. |
| 412 | `precondition_failed` | `If-Match` non corrisponde alla versione corrente della bozza. |
| 422 | `validation_failed` | Un valore di token non è valido (`invalid_value`, `out_of_range`, `unknown_token`); `pointer` indica il token, ad es. `/theme/light/color/primary`. |
| 428 | `precondition_required` | L'intestazione `If-Match` è assente. |
| 401 | `unauthenticated` | La credenziale manca, non è valida o è stata revocata. |
| 403 | `insufficient_permissions` | La credenziale non ha il permesso richiesto. |
| 429 | `rate_limited` | Il limite di frequenza è stato superato; riprovare dopo il periodo `Retry-After`. |
| 503 | `service_unavailable` | Una dipendenza è temporaneamente non disponibile; riprovare dopo il periodo `Retry-After`. |

## Esempio

```bash
curl -X PUT https://api.eu.keenauth.com/v1/branding/applications/app_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"}}}}'
```
