
# Aggiorna i tuoi metadati

`PATCH /fapi/v1/me/metadata` · chiamato dall'host di accesso dell'ambiente

Applica un merge patch RFC 7396 a `user_metadata` dell'utente autenticato. `app_metadata` non può essere scritto qui. Il risultato può essere al massimo 16 KiB, con profondità 5 e 100 chiavi di primo livello. Richiede il cookie `__Host-idp_session` dell'utente autenticato; non serve una verifica recente. Un'app first-party su un'altra origine può invece inviare il proprio access token Front API (`Authorization: DPoP <token>` con una prova DPoP; vedi [Token di accesso Front API](/docs/api/fapi/front-api-token)).

## Richiesta

Intestazioni:

| Intestazione | Obbligatoria | Descrizione |
| --- | --- | --- |
| `Idp-Client` | sì | Identificatore dell'SDK. |
| `Origin` | sì | Deve essere esattamente `https://<host di accesso>`. |
| `If-Match` | no | Facoltativa. Il `ETag` di una risposta precedente (oppure `*`); la modifica viene eseguita solo se il profilo è ancora a quella versione. |

Corpo (`application/merge-patch+json` o `application/json`): il merge patch stesso, un oggetto JSON. Una chiave impostata a `null` viene rimossa; gli oggetti annidati vengono uniti.

```json
{
  "theme": null,
  "preferences": {
    "newsletter": false
  }
}
```

## Risposta

`200 OK` con il profilo aggiornato (stessi campi di `GET /fapi/v1/me`) e un nuovo `ETag`.

## Errori

| Stato | Codice | Quando |
| --- | --- | --- |
| 400 | `malformed_request` | Il corpo non è un oggetto JSON, oppure l'intestazione `If-Match` non è valida. |
| 401 | `unauthenticated` | Cookie di sessione assente o non valido. |
| 403 | `origin_not_allowed` | `Origin` manca oppure è errato. |
| 404 | `not_found` | Impossibile leggere l'account (per esempio perché bloccato o in fase di eliminazione). |
| 412 | `precondition_failed` | `If-Match` non corrisponde alla versione attuale; non è cambiato nulla. |
| 413 | `payload_too_large` | Il corpo supera i 16 KiB. |
| 415 | `unsupported_media_type` | `Content-Type` non supportato. |
| 422 | `validation_failed` | Il patch è vuoto, oppure il risultato supera un limite (`too_large`, `too_many_keys`; il puntatore è la radice del corpo). |
| 503 | `service_unavailable` | La directory utenti non è disponibile temporaneamente; riprova dopo i secondi indicati in `Retry-After`. |

## Esempio

```bash
curl -X PATCH https://example.keenauth.app/fapi/v1/me/metadata \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/merge-patch+json" \
  -b cookies.txt \
  -d '{"theme":null}'
```

## Dati personali

Questo endpoint contiene dati personali: profilo dell'utente finale. [Dati personali nelle API di KeenAuth](/docs/policies/personal-data) descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene cancellato. Non inviare categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale) in nessun campo.
