메타데이터 업데이트
PATCH /fapi/v1/me/metadata · 환경의 로그인 호스트에서 호출
인증된 사용자의 user_metadata에 RFC 7396 병합 패치를 적용합니다. app_metadata는 이 엔드포인트에서 쓸 수 없습니다. 결과는 최대 16 KiB, 깊이 5, 최상위 키 100개까지 허용됩니다. 사용자의 __Host-idp_session 쿠키가 필요하며 최근 재인증은 필요하지 않습니다. 다른 출처의 자사 앱은 대신 프런트 API 액세스 토큰(DPoP 증명과 함께 Authorization: DPoP <token>)을 보낼 수 있습니다. 프런트 API 액세스 토큰을 참조하세요.
요청
헤더:
| 헤더 | 필수 | 설명 |
|---|---|---|
Idp-Client |
예 | SDK 식별자입니다. |
Origin |
예 | 정확히 https://<sign-in host>이어야 합니다. |
If-Match |
아니요 | 선택 사항입니다. 이전 응답의 ETag(또는 *)이며, 프로필이 아직 해당 버전일 때만 변경됩니다. |
본문(application/merge-patch+json 또는 application/json): 병합 패치 자체이며 JSON 객체입니다. 값이 null인 키는 제거되며, 중첩 객체는 병합됩니다.
{
"theme": null,
"preferences": {
"newsletter": false
}
}
응답
업데이트된 프로필(GET /fapi/v1/me와 같은 필드)과 새 ETag가 포함된 200 OK입니다.
오류
| 상태 | 코드 | 발생 조건 |
|---|---|---|
| 400 | malformed_request |
본문이 JSON 객체가 아니거나 If-Match 헤더 형식이 잘못되었습니다. |
| 401 | unauthenticated |
유효한 세션 쿠키가 없습니다. |
| 403 | origin_not_allowed |
Origin이 없거나 잘못되었습니다. |
| 404 | not_found |
계정을 읽을 수 없습니다(예: 차단되었거나 삭제 중인 경우). |
| 412 | precondition_failed |
If-Match가 현재 버전과 일치하지 않습니다. 아무것도 변경되지 않았습니다. |
| 413 | payload_too_large |
본문이 16 KiB를 초과합니다. |
| 415 | unsupported_media_type |
지원하지 않는 Content-Type입니다. |
| 422 | validation_failed |
패치가 비어 있거나 결과가 한도(too_large, too_many_keys)를 초과합니다. 포인터는 본문 루트입니다. |
| 503 | service_unavailable |
사용자 디렉터리를 일시적으로 사용할 수 없습니다. Retry-After초 후에 다시 시도하세요. |
예제
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}'
개인정보
이 엔드포인트는 개인정보를 포함합니다: 최종 사용자 프로필. KeenAuth API의 개인정보에서 저장되는 항목, 보관 기간, 삭제 방법을 확인하세요. 어떤 필드에도 민감정보(건강, 생체 정보, 종교, 정치적 견해, 성적 지향)를 보내지 마세요.