본문으로 건너뛰기
버전: 0.67.0

Agreement 철회 플로우 요약

클라이언트 개발자가 바로 구현할 수 있도록 agreement 철회 플로우의 핵심만 정리한다. 기준 문서는 plan-agreement-withdrawal-api.md이며, 아래 내용은 현재 변경된 서버 코드 기준으로 정리했다.

한눈에 보기

상황기준 값클라이언트 액션서버 API
필수 약관 체크 해제 후 저장isRequired = trueagreement 철회 API 호출 금지, 회원 탈퇴 안내 화면으로 이동기존 회원 탈퇴 플로우 사용
선택 약관 체크 해제 후 저장isRequired = false and agreed = true철회 안내 후 철회 API 호출DELETE /users/agreements/:agreementId/consent
미동의 선택 약관 체크 후 저장isRequired = false and agreed = false기존 동의 API 호출POST /agreements/versions/:versionId/agree
필수 약관 체크 후 저장isRequired = true기존 동의 API 호출POST /agreements/versions/:versionId/agree

핵심 판단 기준

  • 분기 기준은 각 agreement item의 isRequired, agreed
  • 철회 API는 agreementId 기준
  • 동의 API는 versionId 기준
  • 필수 약관은 서버에서 철회하지 않음
  • 선택 약관 철회 API는 현재 활성 동의가 없어도 200 OK로 멱등 성공

화면 플로우

API 사용 방식

1. 약관 목록 조회

GET /users/agreements

클라이언트가 바로 써야 하는 필드:

필드의미용도
agreementId약관 자체 ID철회 API path param
versionId현재 활성 버전 ID동의 API path param
isRequired필수 여부탈퇴 플로우 분기
agreed현재 사용자 동의 상태체크 초기값, 저장 분기
isAgreeable동의 가능한 항목인지UI 제어

예시:

{
"items": [
{
"agreementId": "agreement-required-uuid",
"versionId": "version-required-uuid",
"isRequired": true,
"agreed": true,
"isAgreeable": true
},
{
"agreementId": "agreement-optional-uuid",
"versionId": "version-optional-uuid",
"isRequired": false,
"agreed": false,
"isAgreeable": true
}
]
}

2. 선택 약관 철회

DELETE /users/agreements/:agreementId/consent

응답 예시:

{
"success": true,
"agreementId": "agreement-uuid",
"agreed": false,
"revokedAt": "2026-03-11T10:15:30.000Z"
}

규칙:

  • 선택 약관만 가능
  • 필수 약관이면 400
  • 대상 약관이 없으면 404
  • 이미 철회 상태여도 200 성공 가능

3. 동의 및 재동의

POST /agreements/versions/:versionId/agree

응답 예시:

{
"success": true,
"agreementId": "agreement-uuid",
"versionId": "version-uuid",
"agreed": true,
"agreedAt": "2026-03-11T10:15:30.000Z"
}

규칙:

  • 신규 동의와 재동의 모두 동일 API 사용
  • 선택 약관을 철회한 뒤 다시 체크하면 이 API를 호출

선택 약관 철회 시퀀스

필수 약관 체크 해제 시퀀스

클라이언트 구현 규칙

  • 저장 시 변경된 각 항목에 대해 isRequired, agreed, 현재 체크값을 비교해서 분기한다.
  • 필수 약관 해제는 agreement 철회 API로 보내면 안 된다.
  • 선택 약관 해제는 agreementId로 철회한다.
  • 선택 약관 동의 또는 재동의는 versionId로 저장한다.
  • 저장 후에는 목록을 재조회하거나 응답값으로 로컬 상태를 즉시 갱신한다.

권장 분기 로직

서버 반영 사항 요약

  • 목록 조회 응답에 agreementId, agreed 추가
  • 선택 약관 철회 API 추가
  • 동의 API 응답에 agreementId, versionId, agreed, agreedAt 포함
  • 서버는 동일 agreement의 최신 기록 기준으로 현재 동의 상태를 계산
  • 철회 후 재동의는 기존 레코드 복구가 아니라 새 동의 레코드 생성 방식