프로필 업데이트
PATCH /fapi/v1/me · 환경의 로그인 호스트에서 호출
인증된 사용자의 프로필 필드를 변경합니다. 본문에 있는 필드는 변경되고, 없는 필드는 그대로 유지됩니다. 빈 문자열이나 null을 보내면 해당 필드가 지워집니다. user_metadata를 지정하면 RFC 7396 병합 패치로 병합됩니다. 관리 API와 동일한 필드 규칙이 적용됩니다. 인증된 사용자의 __Host-idp_session 쿠키가 필요하며, 최근 재인증은 필요하지 않습니다. 다른 출처에 있는 자사 앱은 대신 프런트 API 액세스 토큰(DPoP 증명과 함께 Authorization: DPoP <token>)을 보낼 수 있습니다. 자세한 내용은 프런트 API 액세스 토큰을 참조하십시오.
필드 오류(422 validation_failed, errors[]에 포함): invalid(형식 또는 길이 오류입니다. 환경에서 사용하도록 설정되지 않은 언어를 /locale에 지정한 경우에도 발생합니다), too_large 및 too_many_keys(user_metadata가 16 KiB를 초과하거나, 깊이가 5를 넘거나, 최상위 키가 100개를 넘는 경우), identifier_type_disabled(환경에서 사용자 이름이 꺼져 있습니다), profile_field_disabled(환경에서 해당 필드를 끈 경우입니다. 다만 값을 지우는 것은 허용됩니다), profile_field_required(환경에서 해당 필드를 필수로 지정하여 지울 수 없습니다).
요청
헤더:
| 헤더 | 필수 | 설명 |
|---|---|---|
Idp-Client |
예 | SDK 식별자입니다. |
Origin |
예 | 정확히 https://<sign-in host>이어야 합니다. |
If-Match |
아니요 | 선택 사항입니다. 이전 응답의 ETag(또는 *)이며, 프로필이 여전히 해당 버전일 때만 변경됩니다. |
본문(application/json 또는 application/merge-patch+json):
| 필드 | 유형 | 설명 |
|---|---|---|
given_name |
string 또는 null | 이름입니다. |
family_name |
string 또는 null | 성입니다. |
name |
string 또는 null | 전체 이름입니다. |
picture |
string 또는 null | 사진 URL(https)입니다. |
locale |
string 또는 null | 언어(BCP 47 태그)입니다. |
zoneinfo |
string 또는 null | 시간대(IANA 이름)입니다. |
username |
string 또는 null | 사용자 이름입니다. |
user_metadata |
object | user_metadata에 적용되는 병합 패치입니다(RFC 7396). |
{
"given_name": "Ada",
"zoneinfo": "",
"user_metadata": {
"theme": null
}
}
응답
업데이트된 프로필(GET /fapi/v1/me와 동일한 필드)과 새 ETag를 포함한 200 OK를 반환합니다.
오류
| 상태 | 코드 | 발생 조건 |
|---|---|---|
| 400 | malformed_request |
본문 또는 If-Match 헤더의 형식이 잘못되었습니다. |
| 400 | unknown_field |
여기서 변경할 수 없는 필드가 본문에 있습니다(예: email 또는 app_metadata). |
| 401 | unauthenticated |
유효한 세션 쿠키가 없습니다. |
| 403 | origin_not_allowed |
Origin이 없거나 잘못되었습니다. |
| 404 | not_found |
계정을 읽을 수 없습니다(예: 차단되었거나 삭제 진행 중인 경우). |
| 409 | username_unavailable |
사용자 이름이 예약되었거나 다른 계정이 이미 사용 중입니다(두 경우 모두 같은 응답입니다). |
| 412 | precondition_failed |
If-Match가 현재 버전과 일치하지 않습니다. 아무것도 변경되지 않았습니다. |
| 413 | payload_too_large |
본문이 16 KiB를 초과합니다. |
| 415 | unsupported_media_type |
지원되지 않는 Content-Type입니다. |
| 422 | validation_failed |
필드가 규칙을 위반했습니다. errors[]에 필드와 사유가 표시됩니다(위 내용 참조). |
| 503 | service_unavailable |
사용자 디렉터리를 일시적으로 사용할 수 없습니다. Retry-After초 후에 다시 시도하십시오. |
예시
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":""}'
개인정보
이 엔드포인트는 개인정보, 즉 최종 사용자 프로필을 다룹니다. KeenAuth API의 개인정보에서 저장되는 항목, 보관 기간, 삭제 방식을 설명합니다. 어떤 필드에도 특수 범주의 개인정보(건강, 생체 정보, 종교, 정치적 견해, 성적 지향)를 보내지 마십시오.