soc-roles

Sentivex Incidents Ticket API

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 없음
cURL
curl -X GET https://sit.in-bridge.com/api/soc-roles \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const 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
namestringrequired
descriptionstring
handlesTiersstring
colorstring
sortOrderinteger

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -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}'
JavaScript
const 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)

Path parameters

roleIdstringrequired

Request body

namestring
descriptionstring
handlesTiersstring
colorstring
sortOrderinteger

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -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}'
JavaScript
const 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)

Path parameters

roleIdstringrequired

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X DELETE https://sit.in-bridge.com/api/soc-roles/{roleId} \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const 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 }

Path parameters

roleIdstringrequired

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X POST https://sit.in-bridge.com/api/soc-roles/{roleId}/members \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const 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 }

Path parameters

roleIdstringrequired

Request body

userIdstring<uuid>required

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -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"}'
JavaScript
const 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();