docs: API 문서 자동 동기화 — 2026-05-18 - #10
GOOHAESEUNG wants to merge 1 commit into
Conversation
📝 WalkthroughWalkthroughThis PR adds API endpoint documentation for authentication flows (Apple and Kakao login), member management operations (dismissal, expulsion, terms agreement), and badge retrieval. The SUMMARY.md table of contents is updated to link to eight new documentation files that each specify endpoint paths, authentication requirements, request/response contracts, and example payloads. ChangesAPI Documentation Expansion
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 12
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@auth/apple-app-login.md`:
- Around line 40-59: The response example in auth/apple-app-login.md doesn't
match the documented LoginResDTO fields; update the JSON example under **응답 예시**
so "data" contains an object matching LoginResDTO (include nickname, email,
accessToken, refreshToken, profileImageUrl with realistic sample values) and
keep the top-level code/message; ensure the field names exactly match the table
(nickname, email, accessToken, refreshToken, profileImageUrl) and remove the
current "data": null.
- Around line 40-51: The LoginResDTO response table is malformed; fix the
Markdown table so the header is "Key | Type | 설명" and each field is a single
aligned row for LoginResDTO: nickname (String, nickname), email (String, email),
accessToken (String, accessToken), refreshToken (String, refreshToken),
profileImageUrl (String, profileImageUrl); remove the stray quoted/translated
cells and any extra rows (those around 닉네임/이메일/URL/포함) so the table renders
correctly for the LoginResDTO fields.
- Around line 10-21: The document has conflicting auth requirements: change the
"인증 필요 여부" and "권한" statements to require authentication (e.g., set to "필요" /
"인증 필요") so they match the Headers section that marks Authorization as required;
ensure the top-level lines (the "인증 필요 여부" and "권한" fields) and any descriptive
text mention that the request must include the Authorization: Bearer {JWT_TOKEN}
header and that the Headers table still marks Authorization as 필수 (O).
In `@auth/apple-web-callback.md`:
- Around line 40-59: The example response JSON is inconsistent with the
documented LoginResDTO; replace the `"data": null` example with a `data` object
that matches LoginResDTO fields (nickname, email, accessToken, refreshToken,
profileImageUrl) and realistic sample values, ensuring the response shape and
keys in the example mirror the table definition for LoginResDTO exactly.
- Around line 40-51: The LoginResDTO table is malformed causing unclear field
contracts; fix the Markdown table for LoginResDTO by rewriting each row into a
proper three-column table (Key | Type | 설명) and ensure the following fields are
present and correctly described: nickname (String, 닉네임), email (String, 이메일),
accessToken (String, accessToken 포함 여부/용도), refreshToken (String, refreshToken),
and profileImageUrl (String, 이미지 URL). Locate the LoginResDTO block in
auth/apple-web-callback.md and replace the broken lines (currently around the
nickname/email/accessToken/refreshToken/profileImageUrl entries) with properly
formatted table rows so consumers can reliably read the DTO contract.
- Around line 10-21: 문서의 인증 상태가 상충하므로 "인증 필요 여부: 불필요"와 요청 헤더 테이블의 "Authorization
필수" 중 하나로 통일하십시오: 만약 이 엔드포인트가 실제로 인증을 요구하면 `인증 필요 여부`와 `권한` 값을 "필요" 또는 적절한 권한
수준으로 변경하고 본문 설명(예: `Authorization: Bearer {JWT_TOKEN}`)을 유지; 반대로 인증이 필요없다면 요청 헤더
테이블에서 `Authorization` 행을 제거하고 관련 설명 블록(Authorization 예시 포함)을 삭제하거나 비필수로(O→선택)
표시하여 `인증 필요 여부`와 헤더 설명이 일치하도록 수정하세요.
In `@auth/kakao-app-login.md`:
- Around line 37-56: The response example JSON doesn't match the documented
LoginResDTO; update the example to return the DTO fields (nickname, email,
accessToken, refreshToken, profileImageUrl) under "data" instead of "null".
Ensure the example structure matches the documented types and naming
(LoginResDTO) and include realistic sample values for each field so the "data"
object demonstrates the exact shape consumers should expect.
- Around line 10-21: 문서의 인증 표기와 헤더 필수 표기가 충돌합니다: "인증 필요 여부"와 "권한" 섹션(현재 "불필요")과
요청 헤더 표에서 Authorization이 필수로 표기된 부분을 일치시켜 주세요; 즉, 결정(인증 필요 또는 불필요)을 선택한 뒤 "인증 필요
여부"와 "권한" 텍스트(예: 인증 필요: O / 권한: 인증 필요)와 요청 헤더 표의 Authorization 필드(필수 O 또는 선택적)
모두를 동일하게 변경하고, 문서 내부의 설명 문구(Authorization: Bearer {JWT_TOKEN})가 선택한 정책에 맞도록
업데이트하여 혼선을 제거하세요.
- Around line 37-48: The LoginResDTO response table is malformed; replace the
junk rows and broken cells with a clean, accurate field table for LoginResDTO
listing each key, type and description (nickname: String - nickname, email:
String - email, accessToken: String - access token, refreshToken: String -
refresh token, profileImageUrl: String - profile image URL) so the contract is
readable and machine‑parsable; update the auth/kakao-app-login.md LoginResDTO
section to remove the stray non-English/garbled rows and ensure consistent
column headers (Key | Type | 설명).
In `@auth/redirect-to-apple.md`:
- Around line 10-21: The document currently contradicts itself: the "인증 필요 여부"
section states "불필요" but the headers table and the preceding note require an
Authorization header; update the doc to follow the "인증 불필요" policy by removing
or neutralizing the requirement for Authorization—specifically edit the note
that begins with "요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다." and the
Headers table entry for Authorization (change 필수 from O to X or remove the row),
and ensure the "인증 필요 여부" and "권한" lines remain "불필요" so the "Authorization
header" requirement and the section headings are consistent.
In `@badge/get-badge-single.md`:
- Around line 37-52: The response schema declares data as BadgeDetailResDTO but
the example shows "data": null; update the documentation so the example matches
the declared DTO or explicitly state nullable behavior: replace the example JSON
with a valid BadgeDetailResDTO object matching keys (badgeId, name, imageUrl,
description, requirement) or add a separate nullable example and document when
data can be null; ensure references to BadgeDetailResDTO and the "data" field in
the Body/응답 예시 sections are consistent.
- Around line 1-47: The document violates multiple Markdown lint rules
(MD041/MD022/MD058/MD031) due to inconsistent header levels and spacing and
malformed fences; fix by normalizing header syntax (use consistent ATX headers
such as "## 배지 단건 조회", "### 개요", "### 엔드포인트", "### 인증", "### 요청 (Request)", "###
응답 (Response)"), ensure exactly one blank line before and after each header and
remove extra consecutive blank lines, replace or properly format the <details>
block as valid Markdown (or remove it) and ensure all fenced code blocks have
opening and closing backticks with a language tag (e.g., ```json) and no stray
inline HTML or unmatched fences; update the sections that reference
BadgeDetailResDTO and the example JSON to use a proper fenced block and
consistent spacing so MD041/MD022/MD058/MD031 are resolved.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 50367e04-6143-474a-ac7c-b616ac459aef
📒 Files selected for processing (9)
SUMMARY.mdauth/apple-app-login.mdauth/apple-web-callback.mdauth/kakao-app-login.mdauth/redirect-to-apple.mdbadge/get-badge-single.mdmember/agree-terms.mdmember/dismiss-member.mdmember/expel-member.md
| - **인증 필요 여부:** 불필요 | ||
| - **권한:** 인증 불필요 | ||
|
|
||
| > 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다. | ||
| > `Authorization: Bearer {JWT_TOKEN}` | ||
|
|
||
| ### 요청 (Request) | ||
|
|
||
| **Headers** | ||
| | Key | Type | 설명 | 필수 | | ||
| |-----|------|------|------| | ||
| | Authorization | String | Bearer 토큰 | O | |
There was a problem hiding this comment.
인증 요구사항이 상충됩니다.
Line 10-11은 인증 불필요, Line 13-21은 Authorization 필수(O)입니다. 하나의 계약으로 통일해 주세요.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 19-19: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@auth/apple-app-login.md` around lines 10 - 21, The document has conflicting
auth requirements: change the "인증 필요 여부" and "권한" statements to require
authentication (e.g., set to "필요" / "인증 필요") so they match the Headers section
that marks Authorization as required; ensure the top-level lines (the "인증 필요 여부"
and "권한" fields) and any descriptive text mention that the request must include
the Authorization: Bearer {JWT_TOKEN} header and that the Headers table still
marks Authorization as 필수 (O).
| **Body (LoginResDTO)** | ||
| | Key | Type | 설명 | | ||
| |-----|------|------| | ||
| | 닉네임" | "사용자 | 닉네임" | | ||
| | nickname | String | nickname | | ||
| | 이메일" | "사용자 | 이메일" | | ||
| | email | String | email | | ||
| | accessToken | String | accessToken | | ||
| | 포함 | 클라이언트만 | 포함 | | ||
| | refreshToken | String | refreshToken | | ||
| | URL" | 이미지 | URL" | | ||
| | profileImageUrl | String | profileImageUrl | | ||
|
|
||
| **응답 예시** | ||
| ```json | ||
| { | ||
| "code": 200, | ||
| "message": "요청이 성공적으로 처리되었습니다.", | ||
| "data": null | ||
| } |
There was a problem hiding this comment.
응답 스키마와 예시가 불일치합니다.
Line 40-51은 DTO 필드를 명시하지만 Line 58은 "data": null입니다. 예시를 실제 로그인 응답 형태로 맞춰야 합니다.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 41-41: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 54-54: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@auth/apple-app-login.md` around lines 40 - 59, The response example in
auth/apple-app-login.md doesn't match the documented LoginResDTO fields; update
the JSON example under **응답 예시** so "data" contains an object matching
LoginResDTO (include nickname, email, accessToken, refreshToken, profileImageUrl
with realistic sample values) and keep the top-level code/message; ensure the
field names exactly match the table (nickname, email, accessToken, refreshToken,
profileImageUrl) and remove the current "data": null.
| **Body (LoginResDTO)** | ||
| | Key | Type | 설명 | | ||
| |-----|------|------| | ||
| | 닉네임" | "사용자 | 닉네임" | | ||
| | nickname | String | nickname | | ||
| | 이메일" | "사용자 | 이메일" | | ||
| | email | String | email | | ||
| | accessToken | String | accessToken | | ||
| | 포함 | 클라이언트만 | 포함 | | ||
| | refreshToken | String | refreshToken | | ||
| | URL" | 이미지 | URL" | | ||
| | profileImageUrl | String | profileImageUrl | |
There was a problem hiding this comment.
응답 DTO 표가 비정상 행으로 깨져 있습니다.
Line 43/45/48/50 행 때문에 LoginResDTO 필드 설명이 손상되었습니다. 표를 정상 키/타입/설명 행으로 정리해 주세요.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 41-41: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@auth/apple-app-login.md` around lines 40 - 51, The LoginResDTO response table
is malformed; fix the Markdown table so the header is "Key | Type | 설명" and each
field is a single aligned row for LoginResDTO: nickname (String, nickname),
email (String, email), accessToken (String, accessToken), refreshToken (String,
refreshToken), profileImageUrl (String, profileImageUrl); remove the stray
quoted/translated cells and any extra rows (those around 닉네임/이메일/URL/포함) so the
table renders correctly for the LoginResDTO fields.
| - **인증 필요 여부:** 불필요 | ||
| - **권한:** 인증 불필요 | ||
|
|
||
| > 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다. | ||
| > `Authorization: Bearer {JWT_TOKEN}` | ||
|
|
||
| ### 요청 (Request) | ||
|
|
||
| **Headers** | ||
| | Key | Type | 설명 | 필수 | | ||
| |-----|------|------|------| | ||
| | Authorization | String | Bearer 토큰 | O | |
There was a problem hiding this comment.
인증 섹션과 요청 헤더 요구가 충돌합니다.
Line 10-11은 인증 불필요인데, Line 13-21은 Authorization 필수(O)로 문서화되어 있습니다. 둘 중 하나를 기준으로 정정이 필요합니다.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 19-19: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@auth/apple-web-callback.md` around lines 10 - 21, 문서의 인증 상태가 상충하므로 "인증 필요 여부:
불필요"와 요청 헤더 테이블의 "Authorization 필수" 중 하나로 통일하십시오: 만약 이 엔드포인트가 실제로 인증을 요구하면 `인증
필요 여부`와 `권한` 값을 "필요" 또는 적절한 권한 수준으로 변경하고 본문 설명(예: `Authorization: Bearer
{JWT_TOKEN}`)을 유지; 반대로 인증이 필요없다면 요청 헤더 테이블에서 `Authorization` 행을 제거하고 관련 설명
블록(Authorization 예시 포함)을 삭제하거나 비필수로(O→선택) 표시하여 `인증 필요 여부`와 헤더 설명이 일치하도록 수정하세요.
| **Body (LoginResDTO)** | ||
| | Key | Type | 설명 | | ||
| |-----|------|------| | ||
| | 닉네임" | "사용자 | 닉네임" | | ||
| | nickname | String | nickname | | ||
| | 이메일" | "사용자 | 이메일" | | ||
| | email | String | email | | ||
| | accessToken | String | accessToken | | ||
| | 포함 | 클라이언트만 | 포함 | | ||
| | refreshToken | String | refreshToken | | ||
| | URL" | 이미지 | URL" | | ||
| | profileImageUrl | String | profileImageUrl | | ||
|
|
||
| **응답 예시** | ||
| ```json | ||
| { | ||
| "code": 200, | ||
| "message": "요청이 성공적으로 처리되었습니다.", | ||
| "data": null | ||
| } |
There was a problem hiding this comment.
응답 Body 정의와 예시 JSON이 서로 불일치합니다.
Line 40-51은 LoginResDTO 반환으로 설명하지만, Line 58은 "data": null입니다. 로그인 API라면 실제 data 예시를 DTO 구조로 맞춰주세요.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 41-41: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 54-54: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@auth/apple-web-callback.md` around lines 40 - 59, The example response JSON
is inconsistent with the documented LoginResDTO; replace the `"data": null`
example with a `data` object that matches LoginResDTO fields (nickname, email,
accessToken, refreshToken, profileImageUrl) and realistic sample values,
ensuring the response shape and keys in the example mirror the table definition
for LoginResDTO exactly.
| **Body (LoginResDTO)** | ||
| | Key | Type | 설명 | | ||
| |-----|------|------| | ||
| | 닉네임" | "사용자 | 닉네임" | | ||
| | nickname | String | nickname | | ||
| | 이메일" | "사용자 | 이메일" | | ||
| | email | String | email | | ||
| | accessToken | String | accessToken | | ||
| | 포함 | 클라이언트만 | 포함 | | ||
| | refreshToken | String | refreshToken | | ||
| | URL" | 이미지 | URL" | | ||
| | profileImageUrl | String | profileImageUrl | | ||
|
|
||
| **응답 예시** | ||
| ```json | ||
| { | ||
| "code": 200, | ||
| "message": "요청이 성공적으로 처리되었습니다.", | ||
| "data": null | ||
| } |
There was a problem hiding this comment.
응답 정의와 예시 JSON이 서로 맞지 않습니다.
Line 37-48은 DTO 반환인데 Line 55는 "data": null입니다. 로그인 응답 예시는 DTO 필드를 포함하도록 갱신해 주세요.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 38-38: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 51-51: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@auth/kakao-app-login.md` around lines 37 - 56, The response example JSON
doesn't match the documented LoginResDTO; update the example to return the DTO
fields (nickname, email, accessToken, refreshToken, profileImageUrl) under
"data" instead of "null". Ensure the example structure matches the documented
types and naming (LoginResDTO) and include realistic sample values for each
field so the "data" object demonstrates the exact shape consumers should expect.
| **Body (LoginResDTO)** | ||
| | Key | Type | 설명 | | ||
| |-----|------|------| | ||
| | 닉네임" | "사용자 | 닉네임" | | ||
| | nickname | String | nickname | | ||
| | 이메일" | "사용자 | 이메일" | | ||
| | email | String | email | | ||
| | accessToken | String | accessToken | | ||
| | 포함 | 클라이언트만 | 포함 | | ||
| | refreshToken | String | refreshToken | | ||
| | URL" | 이미지 | URL" | | ||
| | profileImageUrl | String | profileImageUrl | |
There was a problem hiding this comment.
LoginResDTO 필드 테이블이 깨져 계약 해석이 어렵습니다.
Line 40/42/45/47의 비정상 행을 포함한 표는 자동생성 오류로 보입니다. 정상 필드 정의로 교체가 필요합니다.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 38-38: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@auth/kakao-app-login.md` around lines 37 - 48, The LoginResDTO response table
is malformed; replace the junk rows and broken cells with a clean, accurate
field table for LoginResDTO listing each key, type and description (nickname:
String - nickname, email: String - email, accessToken: String - access token,
refreshToken: String - refresh token, profileImageUrl: String - profile image
URL) so the contract is readable and machine‑parsable; update the
auth/kakao-app-login.md LoginResDTO section to remove the stray
non-English/garbled rows and ensure consistent column headers (Key | Type | 설명).
| - **인증 필요 여부:** 불필요 | ||
| - **권한:** 인증 불필요 | ||
|
|
||
| > 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다. | ||
| > `Authorization: Bearer {JWT_TOKEN}` | ||
|
|
||
| ### 요청 (Request) | ||
|
|
||
| **Headers** | ||
| | Key | Type | 설명 | 필수 | | ||
| |-----|------|------|------| | ||
| | Authorization | String | Bearer 토큰 | O | |
There was a problem hiding this comment.
인증 요구사항이 서로 모순됩니다.
Line 10-11은 “인증 불필요”인데, Line 13-21은 Authorization 헤더를 필수(O)로 강제합니다. 한쪽으로 통일해야 클라이언트가 잘못 구현하지 않습니다.
✅ Suggested fix (인증 불필요 기준)
### 인증
- **인증 필요 여부:** 불필요
- **권한:** 인증 불필요
-> 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다.
-> `Authorization: Bearer {JWT_TOKEN}`
-
### 요청 (Request)
**Headers**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
-| Authorization | String | Bearer 토큰 | O |
+| - | - | 헤더 없음 | - |🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 19-19: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@auth/redirect-to-apple.md` around lines 10 - 21, The document currently
contradicts itself: the "인증 필요 여부" section states "불필요" but the headers table
and the preceding note require an Authorization header; update the doc to follow
the "인증 불필요" policy by removing or neutralizing the requirement for
Authorization—specifically edit the note that begins with "요청 헤더(Header)에 아래와 같이
Authorization 필드를 포함해야 합니다." and the Headers table entry for Authorization
(change 필수 from O to X or remove the row), and ensure the "인증 필요 여부" and "권한"
lines remain "불필요" so the "Authorization header" requirement and the section
headings are consistent.
| ## 배지 단건 조회 | ||
|
|
||
| ### 개요 | ||
| 배지 단건 조회 | ||
|
|
||
| ### 엔드포인트 | ||
| `GET /v1/admin/badges/{badgeId}` | ||
|
|
||
| ### 인증 | ||
| - **인증 필요 여부:** JWT 인증 필요 | ||
| - **권한:** 관리자만 접근 가능 (MANAGER 이상) | ||
|
|
||
| > 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다. | ||
| > `Authorization: Bearer {JWT_TOKEN}` | ||
|
|
||
| ### 요청 (Request) | ||
|
|
||
| **Headers** | ||
| | Key | Type | 설명 | 필수 | | ||
| |-----|------|------|------| | ||
| | Authorization | String | Bearer 토큰 | O | | ||
|
|
||
| **Path Parameters** | ||
| | Key | Type | 설명 | 필수 | | ||
| |-----|------|------|------| | ||
| | badgeId | Long | badgeId | O | | ||
|
|
||
| --- | ||
|
|
||
| ### 응답 (Response) | ||
|
|
||
| **성공** | ||
| | HTTP Status | 의미 | | ||
| |-------------|------| | ||
| | 200 OK | 요청 성공 | | ||
|
|
||
| **Body (BadgeDetailResDTO)** | ||
| | Key | Type | 설명 | | ||
| |-----|------|------| | ||
| | badgeId | Long | badgeId | | ||
| | name | String | name | | ||
| | imageUrl | String | imageUrl | | ||
| | description | String | description | | ||
| | requirement | String | requirement | | ||
|
|
||
| **응답 예시** | ||
| ```json |
There was a problem hiding this comment.
Markdown lint 경고(MD041/MD022/MD058/MD031)를 정리해 주세요.
현재 헤더 레벨/공백 규칙 위반이 다수 있습니다(예: Line 1, 3, 6, 9, 19, 24, 33, 38, 47). 문서 CI 안정성을 위해 한 번에 정리하는 게 좋습니다.
제안 수정안 (일부)
-## 배지 단건 조회
+# 배지 단건 조회
### 개요
+
배지 단건 조회
### 엔드포인트
+
`GET /v1/admin/badges/{badgeId}`
### 인증
+
- **인증 필요 여부:** JWT 인증 필요
- **권한:** 관리자만 접근 가능 (MANAGER 이상)
@@
**Headers**
+
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| Authorization | String | Bearer 토큰 | O |
**Path Parameters**
+
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| badgeId | Long | badgeId | O |
@@
**성공**
+
| HTTP Status | 의미 |
|-------------|------|
| 200 OK | 요청 성공 |
**Body (BadgeDetailResDTO)**
+
| Key | Type | 설명 |
|-----|------|------|
| badgeId | Long | badgeId |
@@
**응답 예시**
+
```json
{📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## 배지 단건 조회 | |
| ### 개요 | |
| 배지 단건 조회 | |
| ### 엔드포인트 | |
| `GET /v1/admin/badges/{badgeId}` | |
| ### 인증 | |
| - **인증 필요 여부:** JWT 인증 필요 | |
| - **권한:** 관리자만 접근 가능 (MANAGER 이상) | |
| > 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다. | |
| > `Authorization: Bearer {JWT_TOKEN}` | |
| ### 요청 (Request) | |
| **Headers** | |
| | Key | Type | 설명 | 필수 | | |
| |-----|------|------|------| | |
| | Authorization | String | Bearer 토큰 | O | | |
| **Path Parameters** | |
| | Key | Type | 설명 | 필수 | | |
| |-----|------|------|------| | |
| | badgeId | Long | badgeId | O | | |
| --- | |
| ### 응답 (Response) | |
| **성공** | |
| | HTTP Status | 의미 | | |
| |-------------|------| | |
| | 200 OK | 요청 성공 | | |
| **Body (BadgeDetailResDTO)** | |
| | Key | Type | 설명 | | |
| |-----|------|------| | |
| | badgeId | Long | badgeId | | |
| | name | String | name | | |
| | imageUrl | String | imageUrl | | |
| | description | String | description | | |
| | requirement | String | requirement | | |
| **응답 예시** | |
| ```json | |
| # 배지 단건 조회 | |
| ### 개요 | |
| 배지 단건 조회 | |
| ### 엔드포인트 | |
| `GET /v1/admin/badges/{badgeId}` | |
| ### 인증 | |
| - **인증 필요 여부:** JWT 인증 필요 | |
| - **권한:** 관리자만 접근 가능 (MANAGER 이상) | |
| > 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다. | |
| > `Authorization: Bearer {JWT_TOKEN}` | |
| ### 요청 (Request) | |
| **Headers** | |
| | Key | Type | 설명 | 필수 | | |
| |-----|------|------|------| | |
| | Authorization | String | Bearer 토큰 | O | | |
| **Path Parameters** | |
| | Key | Type | 설명 | 필수 | | |
| |-----|------|------|------| | |
| | badgeId | Long | badgeId | O | | |
| --- | |
| ### 응답 (Response) | |
| **성공** | |
| | HTTP Status | 의미 | | |
| |-------------|------| | |
| | 200 OK | 요청 성공 | | |
| **Body (BadgeDetailResDTO)** | |
| | Key | Type | 설명 | | |
| |-----|------|------| | |
| | badgeId | Long | badgeId | | |
| | name | String | name | | |
| | imageUrl | String | imageUrl | | |
| | description | String | description | | |
| | requirement | String | requirement | | |
| **응답 예시** | |
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
[warning] 3-3: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 6-6: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 9-9: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 19-19: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 24-24: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 33-33: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 38-38: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 47-47: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@badge/get-badge-single.md` around lines 1 - 47, The document violates
multiple Markdown lint rules (MD041/MD022/MD058/MD031) due to inconsistent
header levels and spacing and malformed fences; fix by normalizing header syntax
(use consistent ATX headers such as "## 배지 단건 조회", "### 개요", "### 엔드포인트", "###
인증", "### 요청 (Request)", "### 응답 (Response)"), ensure exactly one blank line
before and after each header and remove extra consecutive blank lines, replace
or properly format the <details> block as valid Markdown (or remove it) and
ensure all fenced code blocks have opening and closing backticks with a language
tag (e.g., ```json) and no stray inline HTML or unmatched fences; update the
sections that reference BadgeDetailResDTO and the example JSON to use a proper
fenced block and consistent spacing so MD041/MD022/MD058/MD031 are resolved.
| **Body (BadgeDetailResDTO)** | ||
| | Key | Type | 설명 | | ||
| |-----|------|------| | ||
| | badgeId | Long | badgeId | | ||
| | name | String | name | | ||
| | imageUrl | String | imageUrl | | ||
| | description | String | description | | ||
| | requirement | String | requirement | | ||
|
|
||
| **응답 예시** | ||
| ```json | ||
| { | ||
| "code": 200, | ||
| "message": "요청이 성공적으로 처리되었습니다.", | ||
| "data": null | ||
| } |
There was a problem hiding this comment.
응답 스키마와 예시가 서로 모순됩니다.
Line 37-45에서는 data가 BadgeDetailResDTO라고 명시했는데, Line 51 예시는 "data": null입니다. 소비자 입장에서 파싱 계약이 깨집니다. 예시를 DTO 형태로 맞추거나, nullable 응답 조건을 명확히 분리해 주세요.
제안 수정안
{
"code": 200,
"message": "요청이 성공적으로 처리되었습니다.",
- "data": null
+ "data": {
+ "badgeId": 1,
+ "name": "string",
+ "imageUrl": "https://example.com/badge.png",
+ "description": "string",
+ "requirement": "string"
+ }
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| **Body (BadgeDetailResDTO)** | |
| | Key | Type | 설명 | | |
| |-----|------|------| | |
| | badgeId | Long | badgeId | | |
| | name | String | name | | |
| | imageUrl | String | imageUrl | | |
| | description | String | description | | |
| | requirement | String | requirement | | |
| **응답 예시** | |
| ```json | |
| { | |
| "code": 200, | |
| "message": "요청이 성공적으로 처리되었습니다.", | |
| "data": null | |
| } | |
| **Body (BadgeDetailResDTO)** | |
| | Key | Type | 설명 | | |
| |-----|------|------| | |
| | badgeId | Long | badgeId | | |
| | name | String | name | | |
| | imageUrl | String | imageUrl | | |
| | description | String | description | | |
| | requirement | String | requirement | | |
| **응답 예시** |
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 38-38: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 47-47: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@badge/get-badge-single.md` around lines 37 - 52, The response schema declares
data as BadgeDetailResDTO but the example shows "data": null; update the
documentation so the example matches the declared DTO or explicitly state
nullable behavior: replace the example JSON with a valid BadgeDetailResDTO
object matching keys (badgeId, name, imageUrl, description, requirement) or add
a separate nullable example and document when data can be null; ensure
references to BadgeDetailResDTO and the "data" field in the Body/응답 예시 sections
are consistent.
자동 동기화 알림
SURF-BE
dev브랜치의 컨트롤러/DTO 변경사항이 감지되어 API 문서를 자동 동기화합니다.새로 생성된 문서
auth/apple-app-login.md
auth/apple-web-callback.md
auth/kakao-app-login.md
auth/redirect-to-apple.md
badge/get-badge-single.md
member/agree-terms.md
member/dismiss-member.md
member/expel-member.md
주의사항
Summary by CodeRabbit