멤버 정지

POST /fapi/v1/organizations/{org_id}/memberships/{membership_id}:suspend · 환경의 로그인 호스트에서 호출

멤버십을 정지합니다. 멤버는 역할을 유지하지만 조직에서 활동할 수 없습니다. 이 조직 컨텍스트의 세션과 토큰은 취소되며, 멤버가 재활성화되기 전까지는 조직을 선택할 수 없습니다. 이미 정지된 멤버를 정지하면 멤버십이 변경 없이 반환됩니다. 마지막 활성 관리자는 정지할 수 없습니다(409 last_org_admin).

인증된 사용자의 __Host-idp_session 쿠키(정확한 Origin 포함) 또는 자사 앱의 프런트 API 액세스 토큰(DPoP 증명과 함께 Authorization: DPoP <token>; 프런트 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.suspendMember(orgId, membershipId, { expectedVersion: 3 }).

요청

헤더:

헤더 필수 여부 설명
Idp-Client 예 SDK 식별자입니다.
Origin 예(쿠키 사용 시) https://<sign-in host>.
If-Match 아니요 멤버 목록에서 얻은 버전 하나, "<version>". 버전이 일치하지 않거나 두 개 이상이면 412 precondition_failed를 반환합니다.

org_id: 조직 식별자(org_…). membership_id: 멤버십 식별자(mem_…).

본문 없음.

응답

멤버십(멤버 목록의 항목과 같은 필드, 멤버 목록 참조)과 ETag: "<version>"를 포함한 200 OK.

오류

상태 코드 발생 조건
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이 일치하지 않습니다.
404 not_found 이 사용자에게 해당 조직 또는 멤버십이 없습니다. 알 수 없거나, 형식이 잘못되었거나, 다른 사용자의 식별자도 같은 응답을 받습니다.
409 last_org_admin 해당 멤버가 조직의 마지막 활성 관리자입니다.
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:suspend" \
  -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": "suspended",
  "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의 개인 정보에서 저장되는 항목, 보관 기간, 삭제 방법을 설명합니다. 어떤 필드에도 민감한 개인 정보(건강, 생체 정보, 종교, 정치적 견해, 성적 지향)를 보내지 마십시오.