티켓 목록 조회
검색 조건과 일치하는 티켓 목록을 조회합니다. 특정 티켓의 상세 정보는 티켓 조회 API로 확인할 수 있습니다.
필요 권한
사용자 이상의 계정으로 이용할 수 있습니다. 사용자 역할은 권한이 부여된 티켓 분류에 속한 티켓만 조회할 수 있습니다.
HTTP 요청
GET /api/sonar/tickets
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
"https://HOSTNAME/api/sonar/tickets?offset=0&limit=50"
요청 매개변수
| 키 | 필수 | 타입 | 설명 | 비고 |
|---|---|---|---|---|
| offset | X | 32비트 정수 | 건너뛸 갯수 | 0 이상. 기본값: 0 |
| limit | X | 32비트 정수 | 최대 갯수 | 0 이상, 최대 1000. 미지정 시 1000 |
| from | X | 날짜 | 시작 일시 | yyyy-MM-dd HH:mm:ssZ 형식 |
| to | X | 날짜 | 끝 일시 | yyyy-MM-dd HH:mm:ssZ 형식 |
| statuses | X | 문자열 목록 | 상태 목록 | 하단 티켓 상태 코드 참조. 쉼표(,)로 구분 |
| keywords | X | 문자열 | 검색 키워드 | |
| priorities | X | 32비트 정수 목록 | 중요도 목록 | 상 (3), 중 (2), 하 (1). 쉼표(,)로 구분 |
| assignees | X | 문자열 목록 | 담당자 목록 | 쉼표(,)로 구분된 계정 GUID 목록 |
| approvers | X | 문자열 목록 | 결재자 목록 | 쉼표(,)로 구분된 계정 GUID 목록 |
| sort_type | X | 문자열 | 정렬 유형 | ASC, DESC 중 하나 |
| sort_column | X | 문자열 | 정렬 기준 | 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"
}