티켓 생성
새 티켓을 생성합니다. 기존 티켓의 내용은 티켓 수정 API로 변경할 수 있습니다.
필요 권한
사용자 이상의 계정으로 이용할 수 있습니다.
HTTP 요청
POST /api/sonar/tickets
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
-d 'repo_guid=5f0ba741-7551-400d-8bd6-1f14a6e8536d' \
-d 'guid=638cfeb2-e259-46af-961a-1eeb65ea35f0' \
-d 'priority=LOW' \
-d 'title=웹 서버 설정 수집 시도' \
-d 'format=JSON' \
--data-urlencode 'content={"first_seen":"2022-09-20 14:55:54+0900","last_seen":"2022-09-20 14:55:54+0900","priority":"LOW","src_ip":"203.0.113.230","dst_ip":"198.51.100.152","dst_port":443}' \
-X POST \
https://HOSTNAME/api/sonar/tickets
요청 매개변수
| 키 | 필수 | 타입 | 설명 | 비고 |
|---|---|---|---|---|
| repo_guid | O | 문자열 | 티켓 분류 GUID | 36자 |
| guid | O | 문자열 | 티켓 GUID | 36자 |
| priority | O | 문자열 | 중요도 | LOW, MEDIUM, HIGH 중 하나 |
| title | O | 문자열 | 제목 | 최소 1자, 최대 255자 |
| format | O | 문자열 | 내용 형식 | PLAIN, JSON, MARKDOWN 중 하나 |
| content | O | 문자열 | 내용 | 최소 1자, 최대 100,000자 |
| assignees | X | 문자열 목록 | 담당자 GUID 목록 | 쉼표(,)로 구분된 계정 GUID 목록 |
| approvers | X | 문자열 목록 | 결재자 GUID 목록 | 쉼표(,)로 구분된 계정 GUID 목록 |
| attachments | X | 문자열 목록 | 첨부 파일 GUID 목록 | 쉼표(,)로 구분된 파일 GUID 목록 |
| tags | X | 문자열 목록 | 태그 GUID 목록 | 쉼표(,)로 구분된 태그 GUID 목록 |
Note
첨부 파일은 이미 업로드된 파일 객체를 참조하므로 티켓 생성 전에 미리 존재할 수 있습니다. 어떤 티켓에서도 참조하지 않는 파일 객체는 매일 자정에 자동으로 삭제됩니다.
정상 응답
{
"guid": "638cfeb2-e259-46af-961a-1eeb65ea35f0"
}
- guid (문자열): 생성된 티켓 GUID
오류 응답
필수 매개변수가 누락된 경우
HTTP 상태 코드 400 응답
{
"error_code": "null-argument",
"error_msg": "title should be not null"
}
매개변수 값의 길이가 잘못된 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "'title' must be shorter than or equal to 255 characters."
}
유효하지 않은 형식을 지정한 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "format should be one of 'JSON', 'MARKDOWN', 'PLAIN'."
}
유효하지 않은 중요도를 지정한 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "priority should be one of 'LOW', 'MEDIUM', 'HIGH'."
}
내용이 JSON 형식이 아닌 경우
내용 형식(format)을 JSON으로 지정했으나 내용(content)이 JSON 형식이 아니면 오류가 발생합니다.
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "content should be JSON format - Expected a ',' or '}' at character 146"
}
담당자, 결재자, 첨부 파일 목록의 값이 GUID 형식이 아닌 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-param-type",
"error_msg": "assignees should be guid type."
}
티켓 GUID가 중복된 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "duplicated ticket guid: 638cfeb2-e259-46af-961a-1eeb65ea35f0"
}
티켓 분류가 존재하지 않는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "ticket repository not found: 5f0ba741-7551-400d-8bd6-1f14a6e8536d"
}
담당자가 존재하지 않는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "assignee not found: fae7fa2b-756e-4d3d-b314-e631daf70c7a"
}
첨부 파일이 존재하지 않는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "attachment not found: 8e904789-b9b9-443a-b1a1-86a36119c74c"
}
권한이 없는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "no-permission"
}