티켓 목록 조회

검색 조건과 일치하는 티켓 목록을 조회합니다. 특정 티켓의 상세 정보는 티켓 조회 API로 확인할 수 있습니다.

필요 권한

사용자 이상의 계정으로 이용할 수 있습니다. 사용자 역할은 권한이 부여된 티켓 분류에 속한 티켓만 조회할 수 있습니다.

HTTP 요청

GET /api/sonar/tickets
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
     "https://HOSTNAME/api/sonar/tickets?offset=0&limit=50"
요청 매개변수
필수타입설명비고
offsetX32비트 정수건너뛸 갯수0 이상. 기본값: 0
limitX32비트 정수최대 갯수0 이상, 최대 1000. 미지정 시 1000
fromX날짜시작 일시yyyy-MM-dd HH:mm:ssZ 형식
toX날짜끝 일시yyyy-MM-dd HH:mm:ssZ 형식
statusesX문자열 목록상태 목록하단 티켓 상태 코드 참조. 쉼표(,)로 구분
keywordsX문자열검색 키워드
prioritiesX32비트 정수 목록중요도 목록상 (3), 중 (2), 하 (1). 쉼표(,)로 구분
assigneesX문자열 목록담당자 목록쉼표(,)로 구분된 계정 GUID 목록
approversX문자열 목록결재자 목록쉼표(,)로 구분된 계정 GUID 목록
sort_typeX문자열정렬 유형ASC, DESC 중 하나
sort_columnX문자열정렬 기준id, created_at, updated_at, closed_at 중 하나

티켓 상태 코드

  • 신규 (NEW)
  • 할당 (ASSIGNED)
  • 처리중 (IN_PROGRESS)
  • 결재중 (SUBMITTED)
  • 승인 (APPROVED)
  • 반려 (REJECTED)
  • 완료 (CLOSED)

정상 응답

{
  "total": 15,
  "tickets": [
    {
      "id": 2,
      "repo_guid": "5f0ba741-7551-400d-8bd6-1f14a6e8536d",
      "repo_name": "위협분석",
      "guid": "49272877-75f2-4c2f-9301-d21c4f9a106d",
      "title": "웹 서버 설정 수집 시도: 203.0.113.172",
      "priority": "LOW",
      "format": "JSON",
      "count": 7,
      "status": "ASSIGNED",
      "attack": true,
      "incident": false,
      "assignees": [
        {
          "user_guid": "bfd00bb0-be99-4fd5-8380-166f544975fa",
          "user_name": "구동언",
          "task_type": "ASSIGNEE",
          "task_status": "ASSIGNED",
          "x_login": null,
          "x_user": null,
          "x_dept": null
        }
      ],
      "approvers": [],
      "tags": [],
      "created": "2022-09-14 17:34:19+0900",
      "updated": "2022-09-14 23:55:29+0900",
      "closed": null
    }
  ]
}
  • total (64비트 정수): 검색 조건과 일치하는 전체 티켓 개수
  • tickets (배열): 검색 조건과 일치하는 티켓 목록
    • id (64비트 정수): 티켓 ID
    • repo_guid (문자열): 티켓 분류 GUID
    • repo_name (문자열): 티켓 분류 이름
    • site_guid (문자열): 사이트 GUID. 사이트가 지정된 경우에만 포함됩니다.
    • site_name (문자열): 사이트 이름. 사이트가 지정된 경우에만 포함됩니다.
    • guid (문자열): 티켓 GUID
    • title (문자열): 제목
    • priority (문자열): 중요도. 상 (HIGH), 중 (MEDIUM), 하 (LOW) 중 하나입니다.
    • format (문자열): 내용 형식. PLAIN, JSON, MARKDOWN 중 하나입니다. 위협 탐지 티켓은 JSON 형식으로 기록됩니다.
    • rule_guid (문자열): 탐지 시나리오 GUID. 탐지로 생성된 티켓에만 포함됩니다.
    • rule_type (문자열): 탐지 시나리오 유형. STREAM, BATCH 중 하나입니다. 탐지로 생성된 티켓에만 포함됩니다.
    • rule_name (문자열): 탐지 시나리오 이름. 탐지로 생성된 티켓에만 포함됩니다.
    • count (32비트 정수): 중복 축약 건수
    • first_seen (문자열): 최초 관측 일시. 값이 있는 경우에만 포함됩니다.
    • last_seen (문자열): 최종 관측 일시. 값이 있는 경우에만 포함됩니다.
    • first_event (문자열): 최초 이벤트 일시. 값이 있는 경우에만 포함됩니다.
    • last_event (문자열): 최종 이벤트 일시. 값이 있는 경우에만 포함됩니다.
    • owner_guid (문자열): 티켓 작성 계정 GUID. 오퍼레이터가 직접 생성한 경우에만 포함됩니다.
    • owner_name (문자열): 티켓 작성 계정 이름. 오퍼레이터가 직접 생성한 경우에만 포함됩니다.
    • status (문자열): 상태. 신규 (NEW), 할당 (ASSIGNED), 처리중 (IN_PROGRESS), 결재중 (SUBMITTED), 승인 (APPROVED), 반려 (REJECTED), 완료 (CLOSED) 중 하나입니다.
    • attack (불리언): 분석 후 기록한 정탐 여부. 탐지가 정확한 경우 true로 기록합니다.
    • incident (불리언): 분석 후 기록한 사고 발생 여부. 즉각적인 대응이 필요한 경우 true로 기록합니다.
    • assignees (배열): 티켓 담당자 목록
      • user_guid (문자열): 담당자 계정 GUID
      • user_name (문자열): 담당자 이름
      • task_type (문자열): 역할 유형. 담당자는 ASSIGNEE입니다.
      • task_status (문자열): 작업 상태. 할당 (ASSIGNED), 처리중 (IN_PROGRESS), 완료 (CLOSED) 중 하나입니다.
      • x_login (문자열): 담당자 계정 삭제 시 기록되는 로그인 계정 이름
      • x_user (문자열): 담당자 계정 삭제 시 기록되는 사용자 이름
      • x_dept (문자열): 담당자 계정 삭제 시 기록되는 부서 이름
    • approvers (배열): 티켓 결재자 목록
      • user_guid (문자열): 결재자 계정 GUID
      • user_name (문자열): 결재자 이름
      • task_type (문자열): 역할 유형. 결재자는 APPROVER입니다.
      • task_status (문자열): 작업 상태. 할당 (ASSIGNED), 승인 (APPROVED), 반려 (REJECTED) 중 하나입니다.
      • x_login (문자열): 결재자 계정 삭제 시 기록되는 로그인 계정 이름
      • x_user (문자열): 결재자 계정 삭제 시 기록되는 사용자 이름
      • x_dept (문자열): 결재자 계정 삭제 시 기록되는 부서 이름
    • tags (배열): 티켓 태그 목록
      • id (32비트 정수): 태그 ID
      • name (문자열): 태그 이름
      • color (문자열): 태그 색상
      • guid (문자열): 태그 GUID
      • company_name (문자열): 회사 (테넌트) 이름
      • description (문자열): 태그 설명
      • created (문자열): 생성 일시
      • updated (문자열): 수정 일시
    • created (문자열): 생성 일시. yyyy-MM-dd HH:mm:ssZ 형식
    • updated (문자열): 수정 일시. yyyy-MM-dd HH:mm:ssZ 형식
    • closed (문자열): 완료 일시. 완료되지 않은 경우 null입니다.
    • x_login (문자열): 티켓 작성 계정 삭제 시 기록되는 로그인 계정 이름
    • x_user (문자열): 티켓 작성 계정 삭제 시 기록되는 사용자 이름
    • x_dept (문자열): 티켓 작성 계정 삭제 시 기록되는 부서 이름
    • x_site (문자열): 사이트 삭제 시 기록되는 사이트 이름

오류 응답

offset, limit 값이 정수가 아닌 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'offset' parameter should be int type"
}
offset 값이 음수인 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'offset' must be greater than or equal to 0."
}
limit 값이 최댓값을 초과한 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'limit' must be less than or equal to 1000."
}
from, to 날짜 형식이 잘못된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'from' should be date literal (yyyy-MM-dd HH:mm:ssZ)"
}
정의되지 않은 상태 코드를 사용한 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'statuses' should contain elements that is one of [NEW, ASSIGNED, IN_PROGRESS, SUBMITTED, APPROVED, REJECTED, CLOSED]"
}
정의되지 않은 중요도 값을 사용한 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "element of priorities should be one of 1 (LOW), 2 (MEDIUM), 3 (HIGH). input is 4"
}
정의되지 않은 정렬 유형을 사용한 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "sort_type should be one of ASC or DESC. input is NONE"
}
허용되지 않은 정렬 기준을 지정한 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "sort_column should be one of id, created_at, updated_at, closed_at."
}
assignees, approvers 목록의 값이 GUID 형식이 아닌 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'assignees' should contain only guid values."
}
권한이 없는 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "no-permission"
}