workspaces

Sentivex Incidents Ticket API

GET/api/workspaces

현재 로그인 사용자가 속한 워크스페이스 목록 반환.

API 라우트: GET /api/workspaces — 현재 로그인 사용자가 속한 워크스페이스 목록 반환. POST /api/workspaces — 새 워크스페이스 생성 + 생성자를 admin 멤버로 자동 등록. 권한: 로그인 필수(requireUser). 슈퍼관리자는 전체 워크스페이스 조회 가능(멤버십 불문). 캐시: Redis에 사용자별 30초 TTL로 목록을 저장하고, 생성 시 무효화. @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X GET https://sit.in-bridge.com/api/workspaces \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${token}`
  }
});
const data = await res.json();
POST/api/workspaces

현재 로그인 사용자가 속한 워크스페이스 목록 반환.

API 라우트: GET /api/workspaces — 현재 로그인 사용자가 속한 워크스페이스 목록 반환. POST /api/workspaces — 새 워크스페이스 생성 + 생성자를 admin 멤버로 자동 등록. 권한: 로그인 필수(requireUser). 슈퍼관리자는 전체 워크스페이스 조회 가능(멤버십 불문). 캐시: Redis에 사용자별 30초 TTL로 목록을 저장하고, 생성 시 무효화. @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Request body

namestringrequired
slugstringrequired

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X POST https://sit.in-bridge.com/api/workspaces \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","slug":"string"}'
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${token}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "name": "string",
    "slug": "string"
  })
});
const data = await res.json();
GET/api/workspaces/{workspaceId}

특정 워크스페이스의 단건 조회 및 정보 수정을 담당한다.

API 라우트: /api/workspaces/[workspaceId] 특정 워크스페이스의 단건 조회 및 정보 수정을 담당한다. 지원 메서드: - GET : 워크스페이스 상세 정보 반환. 모든 워크스페이스 멤버 접근 가능. - PATCH: 워크스페이스 이름·설명·로고 URL 업데이트. admin 전용. 변경 시 전체 멤버의 캐시(workspacesByUser)를 즉시 무효화. 관련 테이블: workspaces, workspaceMembers 캐시: cacheDel(cacheKeys.workspacesByUser) — 멤버 전원 캐시 무효화 @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X GET https://sit.in-bridge.com/api/workspaces/{workspaceId} \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${token}`
  }
});
const data = await res.json();
PATCH/api/workspaces/{workspaceId}

특정 워크스페이스의 단건 조회 및 정보 수정을 담당한다.

API 라우트: /api/workspaces/[workspaceId] 특정 워크스페이스의 단건 조회 및 정보 수정을 담당한다. 지원 메서드: - GET : 워크스페이스 상세 정보 반환. 모든 워크스페이스 멤버 접근 가능. - PATCH: 워크스페이스 이름·설명·로고 URL 업데이트. admin 전용. 변경 시 전체 멤버의 캐시(workspacesByUser)를 즉시 무효화. 관련 테이블: workspaces, workspaceMembers 캐시: cacheDel(cacheKeys.workspacesByUser) — 멤버 전원 캐시 무효화 @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired

Request body

namestring
descriptionstring
logoUrlstring

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X PATCH https://sit.in-bridge.com/api/workspaces/{workspaceId} \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","description":"string","logoUrl":"string"}'
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}", {
  method: "PATCH",
  headers: {
    "Authorization": `Bearer ${token}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "name": "string",
    "description": "string",
    "logoUrl": "string"
  })
});
const data = await res.json();
GET/api/workspaces/{workspaceId}/git

GET /api/workspaces/{workspaceId}/git

Path parameters

workspaceIdstringrequired

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X GET https://sit.in-bridge.com/api/workspaces/{workspaceId}/git \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/git", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${token}`
  }
});
const data = await res.json();
GET/api/workspaces/{workspaceId}/invitations

워크스페이스 이메일 초대 목록 조회 및 신규 초대 발송을 담당한다.

API 라우트: /api/workspaces/[workspaceId]/invitations 워크스페이스 이메일 초대 목록 조회 및 신규 초대 발송을 담당한다. 지원 메서드: - GET : 해당 워크스페이스의 보류 중(미수락·미만료) 초대 목록 반환. admin 전용. - POST: 특정 이메일 주소로 초대 생성 + 이메일 자동 발송. admin 전용. 동일 이메일에 유효한 초대가 이미 존재하면 재사용(reused: true). 권한: 두 메서드 모두 requireWorkspaceAdmin — admin이 아니면 403. 관련 테이블: workspaceInvitations, workspaceMembers, workspaces, users 외부 부작용: sendMail (초대 이메일 발송 — 실패해도 초대 생성에 영향 없음) @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X GET https://sit.in-bridge.com/api/workspaces/{workspaceId}/invitations \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/invitations", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${token}`
  }
});
const data = await res.json();
POST/api/workspaces/{workspaceId}/invitations

워크스페이스 이메일 초대 목록 조회 및 신규 초대 발송을 담당한다.

API 라우트: /api/workspaces/[workspaceId]/invitations 워크스페이스 이메일 초대 목록 조회 및 신규 초대 발송을 담당한다. 지원 메서드: - GET : 해당 워크스페이스의 보류 중(미수락·미만료) 초대 목록 반환. admin 전용. - POST: 특정 이메일 주소로 초대 생성 + 이메일 자동 발송. admin 전용. 동일 이메일에 유효한 초대가 이미 존재하면 재사용(reused: true). 권한: 두 메서드 모두 requireWorkspaceAdmin — admin이 아니면 403. 관련 테이블: workspaceInvitations, workspaceMembers, workspaces, users 외부 부작용: sendMail (초대 이메일 발송 — 실패해도 초대 생성에 영향 없음) @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired

Request body

emailanyrequired
roleenumrequired
adminmember
teamRolesstring<uuid>
projectRolesstring<uuid>

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X POST https://sit.in-bridge.com/api/workspaces/{workspaceId}/invitations \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email":null,"role":"admin","teamRoles":"00000000-0000-0000-0000-000000000000","projectRoles":"00000000-0000-0000-0000-000000000000"}'
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/invitations", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${token}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "email": null,
    "role": "admin",
    "teamRoles": "00000000-0000-0000-0000-000000000000",
    "projectRoles": "00000000-0000-0000-0000-000000000000"
  })
});
const data = await res.json();
DELETE/api/workspaces/{workspaceId}/invitations/{invitationId}

특정 워크스페이스 초대 건(invitationId)을 대상으로 하는 단건 조작 엔드포인트.

API 라우트: /api/workspaces/[workspaceId]/invitations/[invitationId] 특정 워크스페이스 초대 건(invitationId)을 대상으로 하는 단건 조작 엔드포인트. 현재 지원 메서드: - DELETE: 보류 중인 초대를 취소(삭제). workspace admin 전용. 권한: requireWorkspaceAdmin — admin이 아니면 403 Forbidden. 관련 테이블: workspaceInvitations @author jijuta ([email protected]) @since 2026-05-12 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired
invitationIdstringrequired

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X DELETE https://sit.in-bridge.com/api/workspaces/{workspaceId}/invitations/{invitationId} \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/invitations/{invitationId}", {
  method: "DELETE",
  headers: {
    "Authorization": `Bearer ${token}`
  }
});
const data = await res.json();
GET/api/workspaces/{workspaceId}/members

워크스페이스 멤버 목록 조회 및 멤버 추가·역할 변경·제거를 담당한다.

API 라우트: /api/workspaces/[workspaceId]/members 워크스페이스 멤버 목록 조회 및 멤버 추가·역할 변경·제거를 담당한다. 지원 메서드: - GET : 해당 워크스페이스의 전체 멤버 목록 반환. 모든 워크스페이스 멤버 접근 가능. - POST : 이메일로 기존 사용자를 워크스페이스에 직접 추가(초대 없이). admin 전용. 추가 시 대상 사용자에게 알림 전송. - PATCH : 특정 멤버의 역할(admin/member)을 변경. admin 전용. - DELETE: 특정 멤버를 워크스페이스에서 제거. admin 전용. 관련 테이블: workspaceMembers, users, workspaces 외부 부작용: notify (멤버 추가 시 인앱 알림) 주의: 이 라우트의 POST는 이미 가입된 사용자를 직접 추가하는 것이며, 이메일 초대 흐름은 /invitations 라우트가 담당한다. @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X GET https://sit.in-bridge.com/api/workspaces/{workspaceId}/members \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/members", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${token}`
  }
});
const data = await res.json();
POST/api/workspaces/{workspaceId}/members

워크스페이스 멤버 목록 조회 및 멤버 추가·역할 변경·제거를 담당한다.

API 라우트: /api/workspaces/[workspaceId]/members 워크스페이스 멤버 목록 조회 및 멤버 추가·역할 변경·제거를 담당한다. 지원 메서드: - GET : 해당 워크스페이스의 전체 멤버 목록 반환. 모든 워크스페이스 멤버 접근 가능. - POST : 이메일로 기존 사용자를 워크스페이스에 직접 추가(초대 없이). admin 전용. 추가 시 대상 사용자에게 알림 전송. - PATCH : 특정 멤버의 역할(admin/member)을 변경. admin 전용. - DELETE: 특정 멤버를 워크스페이스에서 제거. admin 전용. 관련 테이블: workspaceMembers, users, workspaces 외부 부작용: notify (멤버 추가 시 인앱 알림) 주의: 이 라우트의 POST는 이미 가입된 사용자를 직접 추가하는 것이며, 이메일 초대 흐름은 /invitations 라우트가 담당한다. @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired

Request body

emailanyrequired
roleenumrequired
adminmember
teamRolesstring<uuid>
projectRolesstring<uuid>

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X POST https://sit.in-bridge.com/api/workspaces/{workspaceId}/members \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email":null,"role":"admin","teamRoles":"00000000-0000-0000-0000-000000000000","projectRoles":"00000000-0000-0000-0000-000000000000"}'
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/members", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${token}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "email": null,
    "role": "admin",
    "teamRoles": "00000000-0000-0000-0000-000000000000",
    "projectRoles": "00000000-0000-0000-0000-000000000000"
  })
});
const data = await res.json();
PATCH/api/workspaces/{workspaceId}/members

워크스페이스 멤버 목록 조회 및 멤버 추가·역할 변경·제거를 담당한다.

API 라우트: /api/workspaces/[workspaceId]/members 워크스페이스 멤버 목록 조회 및 멤버 추가·역할 변경·제거를 담당한다. 지원 메서드: - GET : 해당 워크스페이스의 전체 멤버 목록 반환. 모든 워크스페이스 멤버 접근 가능. - POST : 이메일로 기존 사용자를 워크스페이스에 직접 추가(초대 없이). admin 전용. 추가 시 대상 사용자에게 알림 전송. - PATCH : 특정 멤버의 역할(admin/member)을 변경. admin 전용. - DELETE: 특정 멤버를 워크스페이스에서 제거. admin 전용. 관련 테이블: workspaceMembers, users, workspaces 외부 부작용: notify (멤버 추가 시 인앱 알림) 주의: 이 라우트의 POST는 이미 가입된 사용자를 직접 추가하는 것이며, 이메일 초대 흐름은 /invitations 라우트가 담당한다. @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired

Request body

memberIdstring<uuid>required
roleenumrequired
adminmember

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X PATCH https://sit.in-bridge.com/api/workspaces/{workspaceId}/members \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"memberId":"00000000-0000-0000-0000-000000000000","role":"admin"}'
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/members", {
  method: "PATCH",
  headers: {
    "Authorization": `Bearer ${token}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "memberId": "00000000-0000-0000-0000-000000000000",
    "role": "admin"
  })
});
const data = await res.json();
DELETE/api/workspaces/{workspaceId}/members

워크스페이스 멤버 목록 조회 및 멤버 추가·역할 변경·제거를 담당한다.

API 라우트: /api/workspaces/[workspaceId]/members 워크스페이스 멤버 목록 조회 및 멤버 추가·역할 변경·제거를 담당한다. 지원 메서드: - GET : 해당 워크스페이스의 전체 멤버 목록 반환. 모든 워크스페이스 멤버 접근 가능. - POST : 이메일로 기존 사용자를 워크스페이스에 직접 추가(초대 없이). admin 전용. 추가 시 대상 사용자에게 알림 전송. - PATCH : 특정 멤버의 역할(admin/member)을 변경. admin 전용. - DELETE: 특정 멤버를 워크스페이스에서 제거. admin 전용. 관련 테이블: workspaceMembers, users, workspaces 외부 부작용: notify (멤버 추가 시 인앱 알림) 주의: 이 라우트의 POST는 이미 가입된 사용자를 직접 추가하는 것이며, 이메일 초대 흐름은 /invitations 라우트가 담당한다. @author jijuta ([email protected]) @since 2026-05-03 @updated 2026-06-07 — JSDoc 표준(@author/@since/@param 등) 적용

Path parameters

workspaceIdstringrequired

Request body

memberIdstring<uuid>required

Responses

200 성공400 입력 검증 실패(zod)401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X DELETE https://sit.in-bridge.com/api/workspaces/{workspaceId}/members \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"memberId":"00000000-0000-0000-0000-000000000000"}'
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/members", {
  method: "DELETE",
  headers: {
    "Authorization": `Bearer ${token}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "memberId": "00000000-0000-0000-0000-000000000000"
  })
});
const data = await res.json();
GET/api/workspaces/{workspaceId}/members/{userId}

워크스페이스 멤버 상세 조회. users.settings.memberProfile 에 적재된 연락처·스킬

API 라우트: /api/workspaces/[workspaceId]/members/[userId] 워크스페이스 멤버 상세 조회. users.settings.memberProfile 에 적재된 연락처·스킬 프로필과 워크스페이스/팀/프로젝트/SOC 역할 멤버십을 한 응답으로 반환한다. @author jijuta ([email protected]) @since 2026-06-13

Path parameters

workspaceIdstringrequired
userIdstringrequired

Responses

200 성공401 미인증(JWT 쿠키 필요)403 권한 없음404 없음
cURL
curl -X GET https://sit.in-bridge.com/api/workspaces/{workspaceId}/members/{userId} \
  -H "Authorization: Bearer $TOKEN"
JavaScript
const res = await fetch("https://sit.in-bridge.com/api/workspaces/{workspaceId}/members/{userId}", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${token}`
  }
});
const data = await res.json();