
# Creare un link di anteprima del branding

`POST /v1/branding:preview-link` · permesso `branding:write`

Crea un link che mostra la pagina di accesso ospitata con le bozze di branding correnti dell'ambiente, prima che vengano pubblicate. La pagina mostra sempre l'ultima bozza: modifichi una bozza e ricarichi la pagina per vedere la modifica. Un banner segnala che la pagina è un'anteprima e tutti i controlli di accesso sono disattivati. I testi di bozza che sostituiscono quelli predefiniti sono mostrati nella lingua della pagina; non possono modificare il banner di anteprima.

Il link è valido 10 minuti e non può essere revocato; dopo, restituisce `404`. Chiunque abbia il link può vedere la bozza, quindi lo condivida solo con le persone che esaminano il design. Un ambiente può avere al massimo 20 link validi contemporaneamente.

## Richiesta

Il corpo è facoltativo. Senza corpo, la pagina mostra solo la bozza dell'ambiente.

| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| `application_id` | string | no | Applica anche la bozza di questa applicazione (`app_…`). |
| `org_id` | string | no | Applica anche la bozza di questa organizzazione (`org_…`): il suo logo e il colore principale. |

## Risposta

`200 OK`. L'`url` è restituito solo in questa risposta, con `Cache-Control: no-store`. Una richiesta ripetuta con lo stesso `Idempotency-Key` non restituisce `url`, ma `secret_redacted: true`; crei invece un nuovo link.

```json
{
  "url": "https://acme.eu1.keenauth.app/u/preview?token=…",
  "expires_at": "2026-10-19T12:10:00Z"
}
```

## 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. |
| 422 | `validation_failed` | `application_id` o `org_id` non è un ID valido (`invalid_value`). |
| 401 | `unauthenticated` | Le credenziali mancano, non sono valide o sono revocate. |
| 403 | `insufficient_permissions` | Le credenziali non hanno il permesso richiesto. |
| 429 | `rate_limited` | L'ambiente ha già 20 link validi oppure è stato superato il limite di frequenza; riprovi dopo il periodo indicato in `Retry-After`. |
| 503 | `service_unavailable` | Una dipendenza non è disponibile temporaneamente; riprovi dopo il periodo indicato in `Retry-After`. |

## Esempio

```bash
curl -X POST https://api.eu.keenauth.com/v1/branding:preview-link \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"application_id":"app_01jb…"}'
```

Con la CLI:

```bash
keenauth branding preview-link --application-id app_01jb…
```
