GET/api/soc-roles
프로젝트의 SOC 역할 목록 + 각 역할의 담당자(users).
GET /api/soc-roles?projectId= — 프로젝트의 SOC 역할 목록 + 각 역할의 담당자(users).
POST /api/soc-roles — 역할 생성 { projectId, name, description?, handlesTiers?, color?, sortOrder? }
SOC 역할 = 인시던트 티켓을 받는 담당자 풀의 분류(L1/L2/IR/포렌식/헌팅 등).
역할별 멤버는 /api/soc-roles/[roleId]/members 로 등록/삭제.
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X GET https://sit.in-bridge.com/api/soc-roles \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/soc-roles", {
method: "GET",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();
POST/api/soc-roles
프로젝트의 SOC 역할 목록 + 각 역할의 담당자(users).
GET /api/soc-roles?projectId= — 프로젝트의 SOC 역할 목록 + 각 역할의 담당자(users).
POST /api/soc-roles — 역할 생성 { projectId, name, description?, handlesTiers?, color?, sortOrder? }
SOC 역할 = 인시던트 티켓을 받는 담당자 풀의 분류(L1/L2/IR/포렌식/헌팅 등).
역할별 멤버는 /api/soc-roles/[roleId]/members 로 등록/삭제.
Request body
projectIdstring<uuid>required
Responses
200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X POST https://sit.in-bridge.com/api/soc-roles \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"projectId":"00000000-0000-0000-0000-000000000000","name":"string","description":"string","handlesTiers":"string","color":"string","sortOrder":0}'
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/soc-roles", {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"projectId": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"handlesTiers": "string",
"color": "string",
"sortOrder": 0
})
});
const data = await res.json();
PATCH/api/soc-roles/{roleId}
역할 수정 { name?, description?, handlesTiers?, color?, sortOrder? }
PATCH /api/soc-roles/[roleId] — 역할 수정 { name?, description?, handlesTiers?, color?, sortOrder? }
DELETE /api/soc-roles/[roleId] — 역할 삭제 (멤버는 cascade)
Responses
200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X PATCH https://sit.in-bridge.com/api/soc-roles/{roleId} \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","handlesTiers":"string","color":"string","sortOrder":0}'
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/soc-roles/{roleId}", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "string",
"description": "string",
"handlesTiers": "string",
"color": "string",
"sortOrder": 0
})
});
const data = await res.json();
DELETE/api/soc-roles/{roleId}
역할 수정 { name?, description?, handlesTiers?, color?, sortOrder? }
PATCH /api/soc-roles/[roleId] — 역할 수정 { name?, description?, handlesTiers?, color?, sortOrder? }
DELETE /api/soc-roles/[roleId] — 역할 삭제 (멤버는 cascade)
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X DELETE https://sit.in-bridge.com/api/soc-roles/{roleId} \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/soc-roles/{roleId}", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();
POST/api/soc-roles/{roleId}/members
역할에 담당자 등록 { userId, active? }
POST /api/soc-roles/[roleId]/members — 역할에 담당자 등록 { userId, active? }
DELETE /api/soc-roles/[roleId]/members — 역할에서 담당자 제거 { userId }
Responses
200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X POST https://sit.in-bridge.com/api/soc-roles/{roleId}/members \
-H "Authorization: Bearer $TOKEN"
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/soc-roles/{roleId}/members", {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`
}
});
const data = await res.json();
DELETE/api/soc-roles/{roleId}/members
역할에 담당자 등록 { userId, active? }
POST /api/soc-roles/[roleId]/members — 역할에 담당자 등록 { userId, active? }
DELETE /api/soc-roles/[roleId]/members — 역할에서 담당자 제거 { userId }
Request body
userIdstring<uuid>required
Responses
200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURLcurl -X DELETE https://sit.in-bridge.com/api/soc-roles/{roleId}/members \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"userId":"00000000-0000-0000-0000-000000000000"}'
JavaScriptconst res = await fetch("https://sit.in-bridge.com/api/soc-roles/{roleId}/members", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"userId": "00000000-0000-0000-0000-000000000000"
})
});
const data = await res.json();