원클릭으로
api-endpoint-design
요구사항으로부터 RESTful API 엔드포인트를 설계한다. 네이밍 규칙, 리소스 단위, 에러 처리, 응답 구조를 일관되게 정의한다.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
요구사항으로부터 RESTful API 엔드포인트를 설계한다. 네이밍 규칙, 리소스 단위, 에러 처리, 응답 구조를 일관되게 정의한다.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
API 인증/인가(Authorization) 설계를 리뷰하고, 권한 체크 누락·스코프 설계 미흡·권한 상승 리스크를 탐지한다. 접근 통제의 안전성을 검증한다.
API 이용자를 위한 SDK 릴리스 노트 및 마이그레이션 가이드를 생성한다. 변경 사항을 클라이언트 관점에서 정리하고, 구체적인 전환 절차를 제공한다.
API 에러 코드 체계와 에러 응답 계약(Contract)을 설계한다. 일관된 에러 핸들링 규칙을 정의한다.
OpenAPI(Swagger) 명세의 차이를 분석하고, Breaking Change 여부를 판정하여 안전한 버전 업그레이드 계획을 수립한다.
API 리스트 엔드포인트의 페이지네이션·필터링·정렬 구현을 분석하고, 통일된 표준 규격을 수립한다.
API 메이저 버전 전환(v1 → v2)을 위한 단계적 마이그레이션 계획을 수립한다.
| name | api-endpoint-design |
| description | 요구사항으로부터 RESTful API 엔드포인트를 설계한다. 네이밍 규칙, 리소스 단위, 에러 처리, 응답 구조를 일관되게 정의한다. |
| argument-hint | [요구사항 문서|기존 API 코드|기능 설명] (선택: API 설계 규약 파일) |
| user-invocable | true |
| disable-model-invocation | true |
| allowed-tools | Read, Grep, Glob |
당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.
요구사항 정의 또는 기능 설명을 기반으로, 일관성 있는 RESTful API 엔드포인트를 설계한다.
리소스 네이밍, URL 구조, HTTP 메서드 선택, 요청/응답 스키마, 에러 처리 전략까지 체계적으로 정의하여 프론트엔드 개발자 및 외부 연동 파트너가 즉시 사용할 수 있는 명세서를 작성한다.
기존 API가 존재하는 경우, 기존 규약과의 정합성도 반드시 검증한다.
기존 API 규약 분석
routes.*, router.*, urls.py, controller.* 등){ data, meta, errors } 등)리소스 모델링
POST /resource/{id}/actions 패턴 또는엔드포인트 상세 설계
에러 처리 설계
멱등성·안전성 검토
기존 API 정합성 점검
## API 엔드포인트 설계서
### 설계 원칙
- **네이밍 규칙**: [예: 복수형 kebab-case `/api/v1/user-profiles`]
- **버저닝 전략**: [예: `/api/v1/` 경로 기반 버저닝]
- **응답 구조**: [예: `{ data, meta, errors }` 엔벨로프 방식]
- **인증 방식**: [예: Bearer Token]
- **인가 정책**: [예: RBAC 기반]
### 리소스 목록
| 리소스 | 설명 | 상위 리소스 |
|--------|------|------------|
| [리소스명] | [설명] | [없음/부모 리소스] |
### 엔드포인트 상세
#### [METHOD] [PATH]
- **설명**: [엔드포인트 목적]
- **인증**: 필요/불필요
- **인가**: [역할/스코프]
- **멱등성**: 있음/없음
**요청 파라미터**
| 이름 | 위치 | 타입 | 필수 | 설명 | 제약조건 |
|------|------|------|------|------|----------|
| [param] | path/query/body | string | Yes | 설명 | maxLength=50 |
**요청 바디 예시**
```json
{
"example": "value"
}
응답:
| 상태코드 | 설명 | 바디 구조 |
|---|---|---|
| 200 | 성공 | { data: { ... } } |
| 400 | 검증 오류 | { errors: [{ field, code, message }] } |
| 404 | 리소스 없음 | { error: { code, message } } |
(이하 동일하게 반복한다)
{ "error": { "code": "ERROR_CODE", "message": "Human readable message", "details": [ { "field": "email", "code": "INVALID_FORMAT", "message": "Invalid email format" } ] } }
| HTTP 상태 | 에러 코드 | 사용 조건 |
|---|---|---|
| 400 | VALIDATION_ERROR | 입력값 오류 |
| 401 | UNAUTHORIZED | 인증 실패 |
| 403 | FORBIDDEN | 권한 부족 |
| 404 | NOT_FOUND | 리소스 없음 |
| 409 | CONFLICT | 상태 충돌 |
| 판단 항목 | 선택 | 이유 |
|---|---|---|
| 네스트 깊이 | 최대 2단계 | URL 가독성 유지 |
| PUT/PATCH 구분 | PUT=전체 교체, PATCH=부분 수정 | 명확한 의미 분리 |
## 안전 유의사항
- 인증 토큰·시크릿의 실제 값은 명세서에 포함하지 않는다.
- 설계 문서 작성만 수행하며 실제 코드 수정은 하지 않는다.
- 기존 API에 Breaking Change가 발생하는 설계일 경우 명확히 경고한다.
- 개인정보를 다루는 엔드포인트는 명확히 표시한다.
- 관리자 전용 API와 일반 사용자 API를 구분한다.
---
## 종료 조건
위 출력 포맷에 맞는 API 엔드포인트 설계서를 작성하면 종료한다.
모든 엔드포인트에 대해 요청/응답 스키마가 정의되어 있어야 하며, 공통 에러 규격이 명시되어야 한다.
구현 작업은 사용자 지시를 기다린다.