# 신고·뮤트·차단·순위 동의 서버 API 계약

이 계약은 공급자 중립 애플리케이션 API다. 현재 실제 서버에는 연결되지 않았고 공개 앱도 alpha8 그대로다.

## 엔드포인트

| 동작 | 요청 | 성공 응답 |
|---|---|---:|
| 신고 | `POST /v1/reports` | 202 |
| 뮤트 설정/해제 | `PUT/DELETE /v1/mutes/:actorId` | 204 |
| 차단 설정/해제 | `PUT/DELETE /v1/blocks/:actorId` | 204 |
| 순위 동의 | `PUT /v1/ranking-consents/:circleId` | 200 |

모든 요청은 원격 로그인 세션, 공개키 헤더, 멱등 키가 필요하다. 성공 상태가 아니면 앱은 전송 완료로 표시하지 않는다.

## 개인정보 최소화

- 신고는 대상 종류·대상 ID·정해진 이유 코드만 전송한다. 자유서술·화면 내용·건강 기록은 받지 않는다.
- 감사 이벤트에는 원문 대상 ID 대신 서버가 만든 해시만 남긴다.
- 액세스 토큰·공개키 값·신고 본문은 감사 로그와 결과 JSON에 포함하지 않는다.
- 신고 이유 코드는 `spam`, `harassment`, `unsafe`, `privacy`, `impersonation`만 허용한다.
- 로컬 신고는 실제 서버 신고로 승격하지 않는다.

## 서버 구현 전 확인

1. 세 계정 권한과 차단 우선순위가 schema 6 readback 뒤에도 유지되는지 확인한다.
2. 같은 멱등 키 재전송이 중복 신고·중복 차단을 만들지 않는지 확인한다.
3. 401·403·409·429·5xx를 성공으로 바꾸지 않는다.
4. 감사 로그 보존 기간과 삭제 절차는 개인정보 검토 후 확정한다.

