Actualizar su perfil
PATCH /fapi/v1/me · llamado desde el host de inicio de sesión del entorno
Cambia los campos del perfil del usuario autenticado. Un campo presente en el cuerpo se modifica, un campo ausente se deja como está, y una cadena vacía o null borra el campo. user_metadata, si se indica, se fusiona como un parche de fusión RFC 7396. Se aplican las mismas reglas de campos que en la API de administración. 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).
Errores de campos (422 validation_failed, en errors[]): invalid (formato o longitud; /locale también cuando el idioma no está habilitado para el entorno), too_large y too_many_keys (user_metadata supera 16 KiB, profundidad 5 o 100 claves de nivel superior), identifier_type_disabled (los nombres de usuario están desactivados en el entorno), profile_field_disabled (el entorno desactivó el campo; aun así se permite borrarlo) y profile_field_required (el entorno exige el campo, por lo que no se puede borrar).
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/json o application/merge-patch+json):
| Campo | Tipo | Descripción |
|---|---|---|
given_name |
cadena o null | Nombre. |
family_name |
cadena o null | Apellidos. |
name |
cadena o null | Nombre completo. |
picture |
cadena o null | URL de la imagen (https). |
locale |
cadena o null | Idioma (etiqueta BCP 47). |
zoneinfo |
cadena o null | Zona horaria (nombre IANA). |
username |
cadena o null | Nombre de usuario. |
user_metadata |
objeto | Parche de fusión aplicado a user_metadata (RFC 7396). |
{
"given_name": "Ada",
"zoneinfo": "",
"user_metadata": {
"theme": null
}
}
Respuesta
200 OK con el perfil actualizado (los mismos campos que GET /fapi/v1/me) y un nuevo ETag.
Errores
| Estado | Código | Cuándo |
|---|---|---|
| 400 | malformed_request |
El cuerpo o el encabezado If-Match tiene un formato incorrecto. |
| 400 | unknown_field |
El cuerpo contiene un campo que no se puede modificar aquí (por ejemplo, email o app_metadata). |
| 401 | unauthenticated |
No hay una cookie de sesión válida. |
| 403 | origin_not_allowed |
Origin falta o es incorrecto. |
| 404 | not_found |
No se puede leer la cuenta (por ejemplo, está bloqueada o en proceso de eliminación). |
| 409 | username_unavailable |
El nombre de usuario está reservado o ya lo usa otra cuenta (ambos casos reciben la misma respuesta). |
| 412 | precondition_failed |
If-Match no coincide con la versión actual; no se cambió nada. |
| 413 | payload_too_large |
El cuerpo supera 16 KiB. |
| 415 | unsupported_media_type |
Content-Type no compatible. |
| 422 | validation_failed |
Un campo incumple una regla; errors[] indica el campo y el motivo (véase arriba). |
| 503 | service_unavailable |
El directorio de usuarios no está disponible temporalmente; reintente después de Retry-After segundos. |
Ejemplo
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":""}'
Datos personales
Este endpoint contiene datos personales: perfil del usuario final. Datos personales en las API de KeenAuth describe qué se almacena, 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.