멤버 재활성화
POST /fapi/v1/organizations/{org_id}/memberships/{membership_id}:reactivate · 환경의 로그인 호스트에서 호출
정지된 멤버십을 다시 활성화합니다. 멤버는 보유하고 있던 역할로 조직을 다시 선택할 수 있습니다. 이미 활성 상태인 멤버를 재활성화하면 멤버십이 변경되지 않은 채로 응답합니다. 사용자의 계정 자체가 활성 상태여야 합니다.
정확한 Origin이 포함된 인증된 사용자의 __Host-idp_session 쿠키 또는 자사 앱의 Front API 액세스 토큰(DPoP 증명과 함께 Authorization: DPoP <token>)이 필요합니다. 자세한 내용은 Front API 액세스 토큰을 참조하세요. 사용자는 idp_members:update_roles와 idp_members:remove 권한을 모두 가진 조직의 활성 멤버여야 합니다. 멤버가 아닌 사용자는 404 not_found를, 두 권한을 모두 갖지 않은 멤버는 403 insufficient_permissions를 받습니다. 여기서 자신의 멤버십은 변경할 수 없으며(403 insufficient_permissions), 관리자 역할을 가진 멤버만 권한이 있는 역할을 가진 멤버를 변경할 수 있습니다(403 role_not_assignable).
@keenauth/js를 사용하는 경우: await keenauth.organizations.reactivateMember(orgId, membershipId, { expectedVersion: 4 }).
요청
헤더:
| 헤더 | 필수 여부 | 설명 |
|---|---|---|
Idp-Client |
예 | SDK 식별자입니다. |
Origin |
쿠키 사용 시 예 | https://<sign-in host>. |
If-Match |
아니요 | 멤버 목록에서 받은 버전 하나, "<version>"입니다. 버전이 일치하지 않거나 여러 버전을 보내면 412 precondition_failed를 반환합니다. |
org_id: 조직 식별자(org_…)입니다. membership_id: 멤버십 식별자(mem_…)입니다.
본문은 없습니다.
응답
200 OK와 함께 멤버십을 반환합니다(필드는 멤버 목록의 항목과 동일합니다)。그리고 ETag: "<version>"을 반환합니다.
오류
| 상태 코드 | 코드 | 발생 조건 |
|---|---|---|
| 400 | malformed_request |
If-Match 형식이 잘못되었습니다. |
| 401 | unauthenticated |
유효한 세션 쿠키 또는 토큰이 없습니다. |
| 403 | insufficient_permissions |
사용자에게 idp_members:update_roles 또는 idp_members:remove 권한이 없거나, 멤버십이 사용자 본인의 것입니다. |
| 403 | role_not_assignable |
멤버가 권한이 있는 역할을 가지고 있고 사용자는 관리자 역할을 가지고 있지 않습니다. |
| 403 | origin_not_allowed |
Origin이 일치하지 않습니다. |
| 403 | user_not_active |
사용자의 계정이 차단되었거나 삭제 대기 중입니다. |
| 404 | not_found |
이 사용자에 대한 해당 조직 또는 멤버십이 없습니다. 알 수 없거나 형식이 잘못되었거나 다른 사용자의 식별자도 같은 응답을 받습니다. |
| 409 | organization_disabled |
조직이 비활성화되었거나 삭제 대기 중입니다(organization_pending_deletion). |
| 412 | precondition_failed |
If-Match가 멤버십의 현재 버전을 가리키지 않습니다. |
| 422 | validation_failed |
멤버십이 삭제되었습니다. |
| 503 | service_unavailable |
일시적으로 사용할 수 없습니다. Retry-After 이후에 다시 시도하세요. |
예시
curl -X POST "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships/mem_01jbz6x8kq3m2n4p5r6s7t8v9b:reactivate" \
-H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
-H "Origin: https://example.keenauth.app" \
-H 'If-Match: "3"' \
-b cookies.txt
{
"id": "mem_01jbz6x8kq3m2n4p5r6s7t8v9b",
"user_id": "usr_01jbz6x8kq3m2n4p5r6s7t8v9c",
"status": "active",
"roles": [{ "role_id": "rol_01jbz6x8kq3m2n4p5r6s7t8v9w", "source": "admin_api" }],
"created_at": "2026-11-03T09:00:00Z",
"activated_at": "2026-11-03T09:00:00Z",
"expires_at": null,
"updated_at": "2026-11-03T11:00:00Z",
"version": 4
}
개인정보
이 엔드포인트는 개인정보를 다룹니다. 조직 멤버십과 초대가 해당합니다. KeenAuth API의 개인정보에서는 저장되는 정보, 보관 기간, 삭제 방법을 설명합니다. 어떤 필드에도 민감정보(건강, 생체 정보, 종교, 정치적 견해, 성적 지향)를 보내지 마세요.