
# Actualizar tus metadatos

`PATCH /fapi/v1/me/metadata` · llamado desde el host de inicio de sesión del entorno

Aplica un merge patch de RFC 7396 a `user_metadata` del usuario autenticado. `app_metadata` no se puede escribir aquí. El resultado puede tener como máximo 16 KiB, profundidad 5 y 100 claves de nivel superior. Requiere la cookie `__Host-idp_session` del usuario autenticado; no es necesaria una reverificación reciente. Una aplicación de primera parte en otro origen puede enviar en su lugar su token de acceso de la API frontal (`Authorization: DPoP <token>` con una prueba DPoP; consulte [Token de acceso de la API frontal](/docs/api/fapi/front-api-token)).

## Solicitud

Encabezados:

| Encabezado | Obligatorio | Descripción |
| --- | --- | --- |
| `Idp-Client` | sí | Identificador del SDK. |
| `Origin` | sí | Debe ser exactamente `https://<host de inicio de sesión>`. |
| `If-Match` | no | Opcional. El `ETag` de una respuesta anterior (o `*`); el cambio solo se realiza si el perfil sigue en esa versión. |

Cuerpo (`application/merge-patch+json` o `application/json`): el propio merge patch, un objeto JSON. Una clave establecida en `null` se elimina; los objetos anidados se combinan.

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

## Respuesta

`200 OK` con el perfil actualizado (mismos campos que `GET /fapi/v1/me`) y un nuevo `ETag`.

## Errores

| Estado | Código | Cuándo |
| --- | --- | --- |
| 400 | `malformed_request` | El cuerpo no es un objeto JSON, o el encabezado `If-Match` está mal formado. |
| 401 | `unauthenticated` | No hay una cookie de sesión válida. |
| 403 | `origin_not_allowed` | `Origin` falta o es incorrecto. |
| 404 | `not_found` | La cuenta no se puede leer (por ejemplo, está bloqueada o en proceso de eliminación). |
| 412 | `precondition_failed` | `If-Match` no coincide con la versión actual; no se cambió nada. |
| 413 | `payload_too_large` | El cuerpo supera los 16 KiB. |
| 415 | `unsupported_media_type` | `Content-Type` no compatible. |
| 422 | `validation_failed` | El patch está vacío o el resultado supera un límite (`too_large`, `too_many_keys`; el puntero es la raíz del cuerpo). |
| 503 | `service_unavailable` | El directorio de usuarios no está disponible temporalmente; reintente después de los segundos indicados en `Retry-After`. |

## Ejemplo

```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}'
```

## Datos personales

Este endpoint contiene datos personales: perfil del usuario final. [Datos personales en las APIs de KeenAuth](/docs/policies/personal-data) describe qué se almacena, durante cuánto tiempo se conserva y cómo se elimina. No envíe categorías especiales de datos personales (salud, datos biométricos, religión, opiniones políticas, orientación sexual) en ningún campo.
