Skip to content

feat: 외부 공개 API 문서 정책 추가 - #77

Merged
Whale0928 merged 1 commit into
mainfrom
feat/api-docs-policy
Jul 16, 2026
Merged

feat: 외부 공개 API 문서 정책 추가#77
Whale0928 merged 1 commit into
mainfrom
feat/api-docs-policy

Conversation

@Whale0928

Copy link
Copy Markdown
Owner

변경 목적

/openapi.json을 서버에 구현된 전체 endpoint 목록이 아니라 외부 API 소비자에게 공개하기로 결정한 API의 allowlist로 관리합니다.

자사 대시보드, 관리자, 시스템 및 중복 transport endpoint는 런타임 동작을 유지하면서 OpenAPI와 공개 Markdown 문서에서 숨깁니다.

변경 로그

OpenAPI 공개 경계

  • AuthControllerSyncController를 클래스 단위 @Hidden으로 전환했습니다.
  • 단어 요청 승인과 form-urlencoded 필터 endpoint를 메서드 단위 @Hidden으로 전환했습니다.
  • 더 이상 사용하지 않는 AuthOpenApi, SyncOpenApi, AcceptWord, BasicProfanityForm 문서 annotation을 제거했습니다.
  • 외부 공개 스펙에서 대시보드 전용 LoginJwtAuth security scheme을 제거했습니다.
  • health, ping, JSON 필터, advanced 필터, 클라이언트/API Key, 단어 변경 요청 API는 공개 상태를 유지합니다.

정책 강제

  • 모든 controller endpoint가 상세 app.openapi 합성 annotation 하나 또는 유효한 @Hidden 중 정확히 하나만 갖도록 ArchUnit 규칙을 변경했습니다.
  • 공개 endpoint에만 controller-holder 이름 일치와 ApiKeyAuth 문서 검증을 적용합니다.
  • OpenAPI E2E에서 공개 operation 수를 12개로 고정하고 auth, sync, word accept 비노출을 검증합니다.

공개 문서와 개발 스킬

  • README와 /overview.md 소스에서 대시보드 로그인, 관리자 sync, 단어 승인 계약을 제거했습니다.
  • 공개 인증·오류 문서를 외부 API Key 사용자를 기준으로 정리했습니다.
  • 신규 API 작업 시 공개 audience를 먼저 판정하는 repo-local api-development 스킬과 3개 평가 사례를 추가했습니다.

영향

  • 런타임 endpoint, Spring Security 접근 제어, 인증 및 관리자 기능 동작은 변경하지 않습니다.
  • 개발자 포털이 읽는 /openapi.json/overview.md에서 내부 API만 사라집니다.
  • 이후 신규 endpoint는 외부 공개 상세 annotation 또는 내부 @Hidden을 반드시 선택해야 합니다.

검증

  • ./gradlew --no-daemon staticCheck 통과
  • OpenAPI ArchUnit 5개 통과
  • OpenAPI E2E 6개 통과
  • Auth, Filter, Sync, Word 런타임 E2E 42개 통과
  • api-development skill validator 통과
  • 별도 포트 18081 HTTP 확인
    • /openapi.json, /overview.md, health, ping HTTP 200
    • 공개 operation 12개
    • auth 전체, sync, word accept 비노출
    • LoginJwtAuth 비노출 및 ApiKeyAuth 유지

확인된 별도 이슈

지정된 로컬 .env의 DB는 Hibernate schema validation에서 client_reports.api_key 컬럼 누락으로 정상 기동되지 않았습니다. 이 PR은 DB나 migration을 수정하지 않습니다. OpenAPI HTTP smoke는 해당 프로세스에서만 schema validation을 비활성화해 수행했으며 파일과 DB에는 변경을 가하지 않았습니다.

@Whale0928
Whale0928 marked this pull request as ready for review July 16, 2026 20:53
@Whale0928
Whale0928 merged commit 87cff65 into main Jul 16, 2026
2 checks passed
@Whale0928
Whale0928 deleted the feat/api-docs-policy branch July 16, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant