GET/api/teams
워크스페이스 내 팀(team) 목록 조회 및 신규 팀 생성을 담당한다.
API 라우트: /api/teams
워크스페이스 내 팀(team) 목록 조회 및 신규 팀 생성을 담당한다.
- GET : 특정 워크스페이스의 팀 목록 반환 (워크스페이스 멤버 이상 접근 가능)
- POST : 새 팀 생성 + 생성자를 자동으로 "lead" 역할로 등록 (워크스페이스 어드민 전용)
팀은 `teams` 테이블에, 팀 멤버십은 `teamMembers` 테이블에 저장된다.
슬러그(slug)는 워크스페이스 내 유일해야 하며, 미입력 시 팀 이름에서 자동 생성된다.
@author jijuta ([email protected])
@since 2026-05-12
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X GET https://sit.in-bridge.com/api/teams \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/teams", {
method: "GET",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();
POST/api/teams
워크스페이스 내 팀(team) 목록 조회 및 신규 팀 생성을 담당한다.
API 라우트: /api/teams
워크스페이스 내 팀(team) 목록 조회 및 신규 팀 생성을 담당한다.
- GET : 특정 워크스페이스의 팀 목록 반환 (워크스페이스 멤버 이상 접근 가능)
- POST : 새 팀 생성 + 생성자를 자동으로 "lead" 역할로 등록 (워크스페이스 어드민 전용)
팀은 `teams` 테이블에, 팀 멤버십은 `teamMembers` 테이블에 저장된다.
슬러그(slug)는 워크스페이스 내 유일해야 하며, 미입력 시 팀 이름에서 자동 생성된다.
@author jijuta ([email protected])
@since 2026-05-12
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Request body
workspaceIdstring<uuid>required
Responses
200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X POST https://sit.in-bridge.com/api/teams \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"workspaceId":"00000000-0000-0000-0000-000000000000","name":"string","slug":"string","icon":"string","color":"string"}'
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/teams", {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"workspaceId": "00000000-0000-0000-0000-000000000000",
"name": "string",
"slug": "string",
"icon": "string",
"color": "string"
})
});
const data = await res.json();
DELETE/api/teams/{teamId}
단일 팀 리소스에 대한 CRUD 엔드포인트.
API 라우트: /api/teams/[teamId]
단일 팀 리소스에 대한 CRUD 엔드포인트.
- GET : 팀 상세 조회 (워크스페이스 멤버면 조회 가능)
- PATCH : 팀 메타데이터(이름/설명/아이콘/색상) 수정 (워크스페이스 어드민 전용)
- DELETE : 팀 삭제 (워크스페이스 어드민 전용)
멤버 관리는 /api/teams/[teamId]/members 라우트에서 별도 처리한다.
@author jijuta ([email protected])
@since 2026-05-12
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X DELETE https://sit.in-bridge.com/api/teams/{teamId} \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/teams/{teamId}", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();
GET/api/teams/{teamId}/members
특정 팀의 멤버를 관리하는 엔드포인트.
API 라우트: /api/teams/[teamId]/members
특정 팀의 멤버를 관리하는 엔드포인트.
- GET : 팀 멤버 목록 조회 (워크스페이스 멤버면 조회 가능)
- POST : 팀에 새 멤버 추가 (워크스페이스 어드민 전용)
- DELETE : 팀에서 멤버 제거, 쿼리 파라미터 userId 필요 (워크스페이스 어드민 전용)
팀은 워크스페이스 소속이므로 모든 권한 검사는 팀의 workspaceId 기준으로 수행된다.
@author jijuta ([email protected])
@since 2026-05-12
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X GET https://sit.in-bridge.com/api/teams/{teamId}/members \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/teams/{teamId}/members", {
method: "GET",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();
POST/api/teams/{teamId}/members
특정 팀의 멤버를 관리하는 엔드포인트.
API 라우트: /api/teams/[teamId]/members
특정 팀의 멤버를 관리하는 엔드포인트.
- GET : 팀 멤버 목록 조회 (워크스페이스 멤버면 조회 가능)
- POST : 팀에 새 멤버 추가 (워크스페이스 어드민 전용)
- DELETE : 팀에서 멤버 제거, 쿼리 파라미터 userId 필요 (워크스페이스 어드민 전용)
팀은 워크스페이스 소속이므로 모든 권한 검사는 팀의 workspaceId 기준으로 수행된다.
@author jijuta ([email protected])
@since 2026-05-12
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Request body
userIdstring<uuid>required
roleenumrequired
leadmember
Responses
200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X POST https://sit.in-bridge.com/api/teams/{teamId}/members \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"userId":"00000000-0000-0000-0000-000000000000","role":"lead"}'
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/teams/{teamId}/members", {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"userId": "00000000-0000-0000-0000-000000000000",
"role": "lead"
})
});
const data = await res.json();
DELETE/api/teams/{teamId}/members
특정 팀의 멤버를 관리하는 엔드포인트.
API 라우트: /api/teams/[teamId]/members
특정 팀의 멤버를 관리하는 엔드포인트.
- GET : 팀 멤버 목록 조회 (워크스페이스 멤버면 조회 가능)
- POST : 팀에 새 멤버 추가 (워크스페이스 어드민 전용)
- DELETE : 팀에서 멤버 제거, 쿼리 파라미터 userId 필요 (워크스페이스 어드민 전용)
팀은 워크스페이스 소속이므로 모든 권한 검사는 팀의 workspaceId 기준으로 수행된다.
@author jijuta ([email protected])
@since 2026-05-12
@updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X DELETE https://sit.in-bridge.com/api/teams/{teamId}/members \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/teams/{teamId}/members", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();