GET/api/sprints
스프린트 목록 조회(GET)와 신규 스프린트 생성(POST)을 처리한다.
API 라우트: /api/sprints
스프린트 목록 조회(GET)와 신규 스프린트 생성(POST)을 처리한다.
두 엔드포인트 모두 JWT 인증 + 프로젝트 멤버십 권한 검사를 수행한다.
- GET /api/sprints?projectId=<uuid> : 해당 프로젝트의 스프린트 목록을 생성일 오름차순으로 반환
- POST /api/sprints : 새 스프린트를 생성하고 활동 로그를 기록한다
@author jijuta ([email protected])
@since 2026-05-03
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X GET https://sit.in-bridge.com/api/sprints \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/sprints", {
method: "GET",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();
POST/api/sprints
스프린트 목록 조회(GET)와 신규 스프린트 생성(POST)을 처리한다.
API 라우트: /api/sprints
스프린트 목록 조회(GET)와 신규 스프린트 생성(POST)을 처리한다.
두 엔드포인트 모두 JWT 인증 + 프로젝트 멤버십 권한 검사를 수행한다.
- GET /api/sprints?projectId=<uuid> : 해당 프로젝트의 스프린트 목록을 생성일 오름차순으로 반환
- POST /api/sprints : 새 스프린트를 생성하고 활동 로그를 기록한다
@author jijuta ([email protected])
@since 2026-05-03
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Request body
projectIdstring<uuid>required
Responses
200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X POST https://sit.in-bridge.com/api/sprints \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"projectId":"00000000-0000-0000-0000-000000000000","name":"string","goal":"string","startDate":"string","endDate":"string"}'
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/sprints", {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"projectId": "00000000-0000-0000-0000-000000000000",
"name": "string",
"goal": "string",
"startDate": "string",
"endDate": "string"
})
});
const data = await res.json();
PATCH/api/sprints/{sprintId}
특정 스프린트의 속성 수정 및 삭제를 담당한다.
API 라우트: PATCH/DELETE /api/sprints/[sprintId]
특정 스프린트의 속성 수정 및 삭제를 담당한다.
- PATCH: 스프린트 이름, 상태(planning/active/completed), 목표, 기간을 부분 업데이트
- DELETE: 스프린트 하드 삭제 (연결된 이슈는 삭제되지 않음 — 이슈의 sprintId만 참조 해제됨)
두 메서드 모두:
- 스프린트 존재 여부와 소속 프로젝트를 먼저 조회한 뒤
- requireProjectAccess로 권한을 검증하고
- activity_logs에 변경 이력을 남긴다.
권한: requireProjectAccess (프로젝트 멤버 이상)
@author jijuta ([email protected])
@since 2026-05-03
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Request body
statusenum
planningactivecompleted
Responses
200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X PATCH https://sit.in-bridge.com/api/sprints/{sprintId} \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","status":"planning","goal":"string","startDate":"string","endDate":"string"}'
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/sprints/{sprintId}", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "string",
"status": "planning",
"goal": "string",
"startDate": "string",
"endDate": "string"
})
});
const data = await res.json();
DELETE/api/sprints/{sprintId}
특정 스프린트의 속성 수정 및 삭제를 담당한다.
API 라우트: PATCH/DELETE /api/sprints/[sprintId]
특정 스프린트의 속성 수정 및 삭제를 담당한다.
- PATCH: 스프린트 이름, 상태(planning/active/completed), 목표, 기간을 부분 업데이트
- DELETE: 스프린트 하드 삭제 (연결된 이슈는 삭제되지 않음 — 이슈의 sprintId만 참조 해제됨)
두 메서드 모두:
- 스프린트 존재 여부와 소속 프로젝트를 먼저 조회한 뒤
- requireProjectAccess로 권한을 검증하고
- activity_logs에 변경 이력을 남긴다.
권한: requireProjectAccess (프로젝트 멤버 이상)
@author jijuta ([email protected])
@since 2026-05-03
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X DELETE https://sit.in-bridge.com/api/sprints/{sprintId} \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/sprints/{sprintId}", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();