
# Mettre à jour votre profil

`PATCH /fapi/v1/me` · appelé depuis l'hôte de connexion de l'environnement

Modifie les champs du profil de l'utilisateur authentifié. Un champ présent dans le corps est modifié, un champ absent reste inchangé, et une chaîne vide ou `null` vide le champ. `user_metadata`, s'il est fourni, est fusionné comme un correctif de fusion RFC 7396. Les mêmes règles de champs que pour l'API de gestion s'appliquent. Le cookie `__Host-idp_session` de l'utilisateur authentifié est requis ; aucune nouvelle vérification récente n'est nécessaire. Une application de première partie sur une autre origine peut à la place envoyer son jeton d'accès à l'API front (`Authorization: DPoP <token>` avec une preuve DPoP ; voir [Jeton d'accès à l'API front](/docs/api/fapi/front-api-token)).

Erreurs de champs (`422 validation_failed`, dans `errors[]`) : `invalid` (format ou longueur ; `/locale` également lorsque la langue n'est pas activée pour l'environnement), `too_large` et `too_many_keys` (`user_metadata` dépasse 16 KiB, une profondeur de 5 ou 100 clés de premier niveau), `identifier_type_disabled` (les noms d'utilisateur sont désactivés dans l'environnement), `profile_field_disabled` (l'environnement a désactivé le champ ; le vider reste autorisé) et `profile_field_required` (l'environnement exige le champ, il ne peut donc pas être vidé).

## Requête

En-têtes :

| En-tête | Obligatoire | Description |
| --- | --- | --- |
| `Idp-Client` | oui | Identifiant du SDK. |
| `Origin` | oui | Doit être exactement `https://<hôte de connexion>`. |
| `If-Match` | non | Facultatif. L'`ETag` d'une réponse précédente (ou `*`) ; la modification n'est effectuée que si le profil est toujours à cette version. |

Corps (`application/json` ou `application/merge-patch+json`) :

| Champ | Type | Description |
| --- | --- | --- |
| `given_name` | chaîne ou null | Prénom. |
| `family_name` | chaîne ou null | Nom de famille. |
| `name` | chaîne ou null | Nom complet. |
| `picture` | chaîne ou null | URL de la photo (`https`). |
| `locale` | chaîne ou null | Langue (balise BCP 47). |
| `zoneinfo` | chaîne ou null | Fuseau horaire (nom IANA). |
| `username` | chaîne ou null | Nom d'utilisateur. |
| `user_metadata` | objet | Correctif de fusion appliqué à `user_metadata` (RFC 7396). |

```json
{
  "given_name": "Ada",
  "zoneinfo": "",
  "user_metadata": {
    "theme": null
  }
}
```

## Réponse

`200 OK` avec le profil mis à jour (mêmes champs que `GET /fapi/v1/me`) et un nouvel `ETag`.

## Erreurs

| Statut | Code | Quand |
| --- | --- | --- |
| 400 | `malformed_request` | Le corps ou l'en-tête `If-Match` est mal formé. |
| 400 | `unknown_field` | Le corps contient un champ qui ne peut pas être modifié ici (par exemple `email` ou `app_metadata`). |
| 401 | `unauthenticated` | Aucun cookie de session valide. |
| 403 | `origin_not_allowed` | `Origin` est absent ou incorrect. |
| 404 | `not_found` | Le compte ne peut pas être lu (par exemple bloqué ou en cours de suppression). |
| 409 | `username_unavailable` | Le nom d'utilisateur est réservé ou déjà utilisé par un autre compte (les deux cas donnent la même réponse). |
| 412 | `precondition_failed` | `If-Match` ne correspond pas à la version actuelle ; rien n'a été modifié. |
| 413 | `payload_too_large` | Le corps dépasse 16 KiB. |
| 415 | `unsupported_media_type` | `Content-Type` non pris en charge. |
| 422 | `validation_failed` | Un champ ne respecte pas une règle ; `errors[]` indique le champ et la raison (voir ci-dessus). |
| 503 | `service_unavailable` | L'annuaire des utilisateurs est temporairement indisponible ; réessayez après `Retry-After` secondes. |

## Exemple

```bash
curl -X PATCH https://example.keenauth.app/fapi/v1/me \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H 'If-Match: "7"' \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"given_name":"Ada","zoneinfo":""}'
```

## Données personnelles

Cet point de terminaison contient des données personnelles : le profil de l'utilisateur final. [Données personnelles dans les API KeenAuth](/docs/policies/personal-data) décrit ce qui est stocké, la durée de conservation et la manière dont elles sont supprimées. N'envoyez aucune donnée personnelle sensible (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans un champ quel qu'il soit.
