- 이슈 페이지네이션
- 이슈 디렉터리
- 프로젝트 이슈 디렉터리
- 단일 이슈
- 단일 프로젝트 이슈
- 새 이슈
- 이슈 편집
- 이슈 삭제
- 이슈 재정렬
- 이슈 이동
- 이슈 복제하기
- 알림
- 할 일 항목 생성
- 이슈를 에픽으로 승격시키기
- 시간 추적
- Merge Request
- 이슈에 참여하는 참가자 디렉터리
- 이슈에 대한 코멘트
- 사용자 에이전트 세부 정보 가져오기
- 이슈 상태 이벤트 디렉터리
- 사건
이슈 API
GitLab Issues를 REST API를 사용하여 상호 작용합니다.
사용자가 비공개 프로젝트의 구성원이 아닌 경우, 해당 프로젝트에 대한 GET
요청은 404
상태 코드로 결과됩니다.
이슈 페이지네이션
기본적으로 API 결과가 페이지별로 표시되기 때문에 GET
요청은 기본적으로 20개의 결과를 반환합니다.
pagination에서 더 자세히 확인하세요.
references.relative
속성은 요청된 이슈의 그룹 또는 프로젝트에 대한 상대적입니다.
이슈가 해당 프로젝트에서 가져올 때 relative
형식은 short
형식과 동일합니다.
그룹 또는 프로젝트 전체에서 요청된 경우, full
형식과 동일하다고 예상됩니다.이슈 디렉터리
due_date
는any
,today
, 및tomorrow
필터가 GitLab 14.8에서 소개되었습니다.
인증된 사용자가 액세스할 수 있는 모든 이슈를 가져옵니다. 기본적으로 현재 사용자가 생성한 이슈만 반환합니다. 모든 이슈를 가져오려면 scope=all
매개변수를 사용하세요.
GET /issues
GET /issues?assignee_id=5
GET /issues?author_id=5
GET /issues?confidential=true
GET /issues?iids[]=42&iids[]=43
GET /issues?labels=foo
GET /issues?labels=foo,bar
GET /issues?labels=foo,bar&state=opened
GET /issues?milestone=1.0.0
GET /issues?milestone=1.0.0&state=opened
GET /issues?my_reaction_emoji=star
GET /issues?search=foo&in=title
GET /issues?state=closed
GET /issues?state=opened
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
assignee_id
| 정수 | 아니오 | 주어진 사용자 id 에 할당된 이슈를 반환합니다. assignee_username 과 상호배타적입니다. None 은 할당되지 않은 이슈를 반환합니다. Any 는 담당자가 있는 이슈를 반환합니다.
|
assignee_username
| 문자열 배열 | 아니오 | 주어진 username 에 할당된 이슈를 반환합니다. assignee_id 와 유사하며 상호배타적입니다. GitLab CE에서 assignee_username 배열은 하나의 값만 포함해야 합니다. 그렇지 않으면 잘못된 매개변수 오류가 반환됩니다.
|
author_id
| 정수 | 아니오 | 주어진 사용자 id 가 생성한 이슈를 반환합니다. author_username 과 상호배타적입니다. scope=all 또는 scope=assigned_to_me 와 결합합니다.
|
author_username
| 문자열 | 아니오 | 주어진 username 가 생성한 이슈를 반환합니다. author_id 와 유사하며 상호배타적입니다.
|
confidential
| 부울 | 아니오 | 기밀 또는 공개 이슈를 필터링합니다. |
created_after
| 날짜 및 시간 | 아니오 | 주어진 시간 이후에 생성된 이슈를 반환합니다. 예상 ISO 8601 형식에 맞춰야 합니다(2019-03-15T08:00:00Z ).
|
created_before
| 날짜 및 시간 | 아니오 | 주어진 시간 이전에 생성된 이슈를 반환합니다. 예상 ISO 8601 형식에 맞춰야 합니다(2019-03-15T08:00:00Z ).
|
due_date
| 문자열 | 아니오 | 만기일이 없거나 만기가 지난 이슈 또는 이번 주, 이번 달 또는 지난 2주부터 다음 달 사이의 만기일이 있는 이슈를 반환합니다. 0 (만기일 없음), any , today , tomorrow , overdue , week , month , next_month_and_previous_two_weeks 를 수용합니다.
|
epic_id
| 정수 | 아니오 | 주어진 epic ID와 관련된 이슈를 반환합니다. None 은 epic과 관련이 없는 이슈를 반환합니다. Any 는 epic과 관련된 이슈를 반환합니다. Premium 및 Ultimate 전용.
|
health_status
| 문자열 | 아니오 | 지정된 health_status 를 가진 이슈를 반환합니다. (GitLab 15.4에서 소개됨). GitLab 15.5 이상에서 None 은 지정된 건강 상태가 할당되지 않은 이슈를 반환하고, Any 는 건강 상태가 할당된 이슈를 반환합니다. Ultimate 전용.
|
iids[]
| 정수 배열 | 아니오 | 주어진 iid 가 있는 이슈만 반환합니다.
|
in
| 문자열 | 아니오 |
search 속성의 범위를 수정합니다. title , description , 또는 그것들을 쉼표로 연결한 문자열입니다. 기본값은 title,description 입니다.
|
issue_type
| 문자열 | 아니오 | 특정 유형의 이슈로 필터링합니다. issue , incident , test_case , task 중 하나입니다.
|
iteration_id
| 정수 | 아니오 | 주어진 iteration ID에 할당된 이슈를 반환합니다. None 은 iteration에 속하지 않은 이슈를 반환합니다. Any 는 iteration에 속한 이슈를 반환합니다. 상호배타적으로 iteration_title 과 동일합니다. Premium 및 Ultimate 전용.
|
iteration_title
| 문자열 | 아니오 | 주어진 제목의 iteration에 할당된 이슈를 반환합니다. iteration_id 와 유사하며 상호배타적입니다. Premium 및 Ultimate 전용.
|
labels
| 문자열 | 아니오 | 라벨 이름의 쉼표로 구분된 디렉터리으로, 이슈가 모두 라벨을 가져야 반환됩니다. None 은 라벨이 없는 모든 이슈를 나열합니다. Any 는 적어도 하나의 라벨이 있는 모든 이슈를 나열합니다. No+Label (Deprecated)는 라벨이 없는 모든 이슈를 나열합니다. 미리 정의된 이름은 대소문자를 구분하지 않습니다.
|
milestone_id
| 문자열 | 아니오 | 주어진 타임박스 값(None , Any , Upcoming , 및 Started )에 대한 마일스톤에 할당된 이슈를 반환합니다. None 은 마일스톤이 없는 모든 이슈를 나열합니다. Any 는 할당된 마일스톤이 있는 모든 이슈를 나열합니다. Upcoming 은 미래에 만료되는 마일스톤에 할당된 모든 이슈를 나열합니다. Started 는 열린 시작된 마일스톤에 할당된 모든 이슈를 나열합니다. milestone 및 milestone_id 는 상호배타적입니다. (GitLab 14.3에서 소개됨)
|
milestone
| 문자열 | 아니오 | 마일스톤 제목입니다. None 은 마일스톤이 없는 모든 이슈를 나열합니다. Any 는 할당된 마일스톤이 있는 모든 이슈를 나열합니다. None 또는 Any 을 사용하는 것은 향후에 사용 중단됩니다. 대신 milestone_id 속성을 사용하세요. milestone 및 milestone_id 는 상호배타적입니다.
|
my_reaction_emoji
| 문자열 | 아니오 | 주어진 emoji 로 인증된 사용자가 반응한 이슈를 반환합니다. None 은 반응이 없는 이슈를 반환합니다. Any 는 적어도 하나의 반응이 있는 이슈를 반환합니다.
|
non_archived
| 부울 | 아니오 | 아카이브된 프로젝트에서만 이슈를 반환합니다. false 이면 응답은 아카이브된 및 아카이브되지 않은 프로젝트에서 모두 이슈를 반환합니다. 기본값은 true 입니다.
|
not
| 해시 | 아니오 | 제공된 매개변수와 일치하지 않는 이슈를 반환합니다. assignee_id , assignee_username , author_id , author_username , iids , iteration_id , iteration_title , labels , milestone , milestone_id , 및 weight 를 수용합니다.
|
order_by
| 문자열 | 아니오 |
created_at , due_date , label_priority , milestone_due , popularity , priority , relative_position , title , updated_at , 또는 weight 필드로 이루어진 순서로 이슈를 반환합니다. 기본값은 created_at 입니다.
|
scope
| 문자열 | 아니오 | 주어진 범위에 대해 이슈를 반환합니다: created_by_me , assigned_to_me , 또는 all . 기본값은 created_by_me 입니다.
|
search
| 문자열 | 아니오 |
title 과 description 에 대한 이슈 검색합니다.
|
sort
| 문자열 | 아니오 |
asc 또는 desc 순으로 정렬된 이슈를 반환합니다. 기본값은 desc 입니다.
|
state
| 문자열 | 아니오 |
all 이슈 또는 opened 또는 closed 상태인 이슈만 반환합니다.
|
updated_after
| 날짜 및 시간 | 아니오 | 주어진 시간 이후에 업데이트된 이슈를 반환합니다. 예상 ISO 8601 형식에 맞춰야 합니다(2019-03-15T08:00:00Z ).
|
updated_before
| 날짜 및 시간 | 아니오 | 주어진 시간 이전에 업데이트된 이슈를 반환합니다. 예상 ISO 8601 형식에 맞춰야 합니다(2019-03-15T08:00:00Z ).
|
weight
| 정수 | 아니오 | 지정된 weight 가 있는 이슈를 반환합니다. None 은 가중치가 할당되지 않은 이슈를 반환합니다. Any 는 가중치가 할당된 이슈를 반환합니다. Premium 및 Ultimate 전용.
|
with_labels_details
| 부울 | 아니오 |
true 이면 응답이 labels 필드에서 각 라벨에 대해 더 많은 세부 정보를 반환합니다: :name , :color , :description , :description_html , :text_color . 기본값은 false 입니다.
|
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/issues"
예시 응답:
[
{
"state" : "opened",
"description" : "Ratione dolores corrupti mollitia soluta quia.",
"author" : {
"state" : "active",
"id" : 18,
"web_url" : "https://gitlab.example.com/eileen.lowe",
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"username" : "eileen.lowe"
},
"milestone" : {
"project_id" : 1,
"description" : "Ducimus nam enim ex consequatur cumque ratione.",
"state" : "closed",
"due_date" : null,
"iid" : 2,
"created_at" : "2016-01-04T15:31:39.996Z",
"title" : "v4.0",
"id" : 17,
"updated_at" : "2016-01-04T15:31:39.996Z"
},
"project_id" : 1,
"assignees" : [{
"state" : "active",
"id" : 1,
"name" : "Administrator",
"web_url" : "https://gitlab.example.com/root",
"avatar_url" : null,
"username" : "root"
}],
"assignee" : {
"state" : "active",
"id" : 1,
"name" : "Administrator",
"web_url" : "https://gitlab.example.com/root",
"avatar_url" : null,
"username" : "root"
},
"type" : "ISSUE",
"updated_at" : "2016-01-04T15:31:51.081Z",
"closed_at" : null,
"closed_by" : null,
"id" : 76,
"title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
"created_at" : "2016-01-04T15:31:51.081Z",
"moved_to_id" : null,
"iid" : 6,
"labels" : ["foo", "bar"],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"user_notes_count": 1,
"due_date": "2016-07-22",
"web_url": "http://gitlab.example.com/my-group/my-project/issues/6",
"references": {
"short": "#6",
"relative": "my-group/my-project#6",
"full": "my-group/my-project#6"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"has_tasks": true,
"task_status": "10 of 15 tasks completed",
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"_links":{
"self":"http://gitlab.example.com/api/v4/projects/1/issues/76",
"notes":"http://gitlab.example.com/api/v4/projects/1/issues/76/notes",
"award_emoji":"http://gitlab.example.com/api/v4/projects/1/issues/76/award_emoji",
"project":"http://gitlab.example.com/api/v4/projects/1",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"task_completion_status
## 그룹 이슈 디렉터리
> - `due_date` 필터의 `any`, `today`, `tomorrow`는 GitLab 14.8에서 [도입되었습니다](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/78460).
특정 그룹의 이슈 디렉터리을 가져옵니다.
그룹이 비공개인 경우, 권한 부여를 위해 자격 증명을 제공해야합니다.
이를 위해 권장되는 방법은 [개인 액세스 토큰](../user/profile/personal_access_tokens.md)을 사용하는 것입니다.
```plaintext
GET /groups/:id/issues
GET /groups/:id/issues?assignee_id=5
GET /groups/:id/issues?author_id=5
GET /groups/:id/issues?confidential=true
GET /groups/:id/issues?iids[]=42&iids[]=43
GET /groups/:id/issues?labels=foo
GET /groups/:id/issues?labels=foo,bar
GET /groups/:id/issues?labels=foo,bar&state=opened
GET /groups/:id/issues?milestone=1.0.0
GET /groups/:id/issues?milestone=1.0.0&state=opened
GET /groups/:id/issues?my_reaction_emoji=star
GET /groups/:id/issues?search=issue+title+or+description
GET /groups/:id/issues?state=closed
GET /groups/:id/issues?state=opened
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 URL-인코딩 된 경로 또는 전역 ID |
assignee_id
| 정수 | 아니오 | 주어진 사용자 id 에 할당된 이슈를 반환합니다. assignee_username 과 상호 배타적입니다. None 은 할당되지 않은 이슈를 반환합니다. Any 는 담당자가 있는 이슈를 반환합니다.
|
assignee_username
| 문자열 배열 | 아니오 | 주어진 username 에 할당된 이슈를 반환합니다. assignee_id 와 상호 배타적입니다. CE에서 assignee_username 배열은 단일 값만 포함해야합니다. 그렇지 않으면 잘못된 매개 변수 오류가 반환됩니다.
|
author_id
| 정수 | 아니오 | 주어진 사용자 id 가 생성한 이슈를 반환합니다. author_username 과 상호 배타적입니다. scope=all 또는 scope=assigned_to_me 와 결합할 수 있습니다.
|
author_username
| 문자열 | 아니오 | 주어진 username 이 생성한 이슈를 반환합니다. author_id 와 상호 배타적입니다.
|
confidential
| 부울 | 아니오 | 기밀 또는 공개 이슈를 필터링합니다. |
created_after
| 날짜시간 | 아니오 | 주어진 시간 이후에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z )으로 예상됩니다.
|
created_before
| 날짜시간 | 아니오 | 주어진 시간 이전에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z )으로 예상됩니다.
|
due_date
| 문자열 | 아니오 | 마감일이 없는 이슈, 마감일이 지난 이슈 또는 이번 주, 이번 달 또는 지난 2주부터 다음 달 사이의 마감일을 가진 이슈를 반환합니다. 0 (마감일 없음), any , today , tomorrow , overdue , week , month , next_month_and_previous_two_weeks 을 허용합니다.
|
epic_id
| 정수 | 아니오 | 주어진 에픽 ID와 관련된 이슈를 반환합니다. None 은 에픽과 관련이 없는 이슈를 반환합니다. Any 는 에픽과 관련된 이슈를 반환합니다. Premium 및 Ultimate 전용.
|
iids[]
| 정수 배열 | 아니오 | 주어진 iid 를 가진 이슈만 반환합니다.
|
issue_type
| 문자열 | 아니오 | 특정 유형의 이슈를 필터링합니다. issue , incident , test_case 또는 task 중 하나입니다.
|
iteration_id
| 정수 | 아니오 | 주어진 iteration ID에 할당된 이슈를 반환합니다. None 은 iteration에 속하지 않는 이슈를 반환합니다. Any 는 iteration에 속한 이슈를 반환합니다. 상호 배타적으로 iteration_title 과입니다. Premium 및 Ultimate 전용.
|
iteration_title
| 문자열 | 아니오 | 주어진 제목을 가진 iteration에 할당된 이슈를 반환합니다. iteration_id 와 상호 배타적입니다. Premium 및 Ultimate 전용.
|
labels
| 문자열 | 아니오 | 라벨 이름의 쉼표로 구분된 디렉터리이며, 반환되려면 이슈에 모든 라벨을 가지고 있어야합니다. None 은 라벨이 없는 모든 이슈를 나열합니다. Any 는 적어도 하나의 라벨이 있는 모든 이슈를 나열합니다. No+Label (사용 중지됨)은 라벨이 없는 모든 이슈를 나열합니다. 미리 정의된 이름은 대소문자를 구분하지 않습니다.
|
milestone
| 문자열 | 아니오 | 마일스톤 제목입니다. None 은 마일스톤이 지정되지 않은 모든 이슈를 나열합니다. Any 는 할당된 마일스톤이 있는 모든 이슈를 나열합니다.
|
my_reaction_emoji
| 문자열 | 아니오 | 주어진 emoji 에 의해 인증된 사용자가 대응하는 이슈를 반환합니다. None 은 반응이 없는 이슈를 반환합니다. Any 는 적어도 하나의 반응이 있는 이슈를 반환합니다.
|
non_archived
| 부울 | 아니오 | 아카이브되지 않은 프로젝트의 이슈를 반환합니다. 기본값은 true입니다. |
not
| 해시 | 아니오 | 제공된 매개 변수와 일치하지 않는 이슈를 반환합니다. labels , milestone , author_id , author_username , assignee_id , assignee_username , my_reaction_emoji , search , in 을 허용합니다.
|
order_by
| 문자열 | 아니오 |
created_at , updated_at , priority , due_date , relative_position , label_priority , milestone_due , popularity , weight 필드순으로 이슈를 반환합니다. 기본값은 created_at 입니다.
|
scope
| 문자열 | 아니오 | 주어진 범위에 대한 이슈를 반환합니다. created_by_me , assigned_to_me 또는 all 중 하나입니다. 기본값은 all 입니다.
|
search
| 문자열 | 아니오 | 그룹 이슈를 title 과 description 에 대해 검색합니다.
|
sort
| 문자열 | 아니오 |
asc 또는 desc 순으로 정렬된 이슈를 반환합니다. 기본값은 desc 입니다.
|
state
| 문자열 | 아니오 | 모든 이슈 또는 opened 또는 closed 상태의 이슈를 반환합니다.
|
updated_after
| 날짜시간 | 아니오 | 주어진 시간 이후에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z )으로 예상됩니다.
|
updated_before
| 날짜시간 | 아니오 | 주어진 시간 이전에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z )으로 예상됩니다.
|
weight
| 정수 | 아니오 | 지정된 weight 를 가진 이슈를 반환합니다. None 은 가중치가 할당되지 않은 이슈를 반환합니다. Any 는 가중치가 할당된 모든 이슈를 반환합니다. Premium 및 Ultimate 전용.
|
with_labels_details
| 부울 | 아니오 |
true 이면 레이블 필드의 각 레이블에 대해 더 많은 세부 정보를 포함하여 응답이 반환됩니다. :name , :color , :description , :description_html , :text_color 이 기본값은 false 입니다.
|
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/4/issues"
예시 응답:
[
{
"project_id" : 4,
"milestone" : {
"due_date" : null,
"project_id" : 4,
"state" : "closed",
"description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
"iid" : 3,
"id" : 11,
"title" : "v3.0",
"created_at" : "2016-01-04T15:31:39.788Z",
"updated_at" : "2016-01-04T15:31:39.788Z"
},
"author" : {
"state" : "active",
"web_url" : "https://gitlab.example.com/root",
"avatar_url" : null,
"username" : "root",
"id" : 1,
"name" : "Administrator"
},
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"state" : "closed",
"iid" : 1,
"assignees" : [{
"avatar_url" : null,
"web_url" : "https://gitlab.example.com/lennie",
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
}],
"assignee" : {
"avatar_url" : null,
"web_url" : "https://gitlab.example.com/lennie",
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
},
"type" : "ISSUE",
"labels" : ["foo", "bar"],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"id" : 41,
"title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
"updated_at" : "2016-01-04T15:31:46.176Z",
"created_at" : "2016-01-04T15:31:46.176Z",
"closed_at" : null,
"closed_by" : null,
"user_notes_count": 1,
"due_date": null,
"web_url": "http://gitlab.example.com/my-group/my-project/issues/1",
"references": {
"short": "#1",
"relative": "my-project#1",
"full": "my-group/my-project#1"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"has_tasks": true,
"task_status": "15개 작업 중 10개 작업 완료",
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"_links":{
"self":"http://gitlab.example.com/api/v4/projects/4/issues/41",
"notes":"http://gitlab.example.com/api/v4/projects/4/issues/41/notes",
"award_emoji":"http://gitlab.example.com/api/v4/projects/4/issues/41/award_emoji",
"project":"http://gitlab.example.com/api/v4/projects/4",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"task_completion_status":{
"count":0,
"completed_count":0
}
}
]
GitLab Premium 또는 Ultimate 사용자에 의해 생성된 이슈에는 weight
속성이 포함됩니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"weight": null,
...
}
]
GitLab Premium 또는 Ultimate 사용자에 의해 생성된 이슈는 epic
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"epic_iid" : 5, //deprecated, use `epic` 속성의 `iid`를 사용하세요
"epic": {
"id" : 42,
"iid" : 5,
"title": "My epic epic",
"url" : "/groups/h5bp/-/epics/5",
"group_id": 8
},
...
}
GitLab Ultimate 사용자에 의해 생성된 이슈는 health_status
속성이 포함됩니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"health_status": "at_risk",
...
}
]
assignee
열은 사용되지 않습니다. 이제 규모에 따라 EE API에 따라 assignees
로 표시합니다.프로젝트 이슈 디렉터리
due_date
필터any
,today
, 그리고tomorrow
는 GitLab 14.8에서 도입되었습니다.
프로젝트의 이슈 디렉터리을 얻습니다.
프로젝트가 비공개인 경우, 권한 부여를 위해 자격 증명을 제공해야 합니다. 이를 위한 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.
GET /projects/:id/issues
GET /projects/:id/issues?assignee_id=5
GET /projects/:id/issues?author_id=5
GET /projects/:id/issues?confidential=true
GET /projects/:id/issues?iids[]=42&iids[]=43
GET /projects/:id/issues?labels=foo
GET /projects/:id/issues?labels=foo,bar
GET /projects/:id/issues?labels=foo,bar&state=opened
GET /projects/:id/issues?milestone=1.0.0
GET /projects/:id/issues?milestone=1.0.0&state=opened
GET /projects/:id/issues?my_reaction_emoji=star
GET /projects/:id/issues?search=issue+title+or+description
GET /projects/:id/issues?state=closed
GET /projects/:id/issues?state=opened
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 전역 ID 또는 URL 인코딩된 경로. |
assignee_id
| 정수 | 아니오 | 주어진 사용자 id 에 할당된 이슈를 반환합니다. assignee_username 과 상호 배타적입니다. None 은 할당되지 않은 이슈를 반환합니다. Any 는 담당자가 있는 이슈를 반환합니다.
|
assignee_username
| 문자열 배열 | 아니오 | 주어진 username 에 할당된 이슈를 반환합니다. assignee_id 와 상호 배타적입니다. GitLab CE에서 assignee_username 배열은 하나의 값만 포함해야 합니다. 그렇지 않으면 잘못된 매개변수 오류가 반환됩니다.
|
author_id
| 정수 | 아니오 | 주어진 사용자 id 에 의해 생성된 이슈를 반환합니다. author_username 와 상호 배타적입니다. scope=all 또는 scope=assigned_to_me 과 결합합니다.
|
author_username
| 문자열 | 아니오 | 주어진 username 에 의해 생성된 이슈를 반환합니다. author_id 와 상호 배타적입니다.
|
confidential
| 부울 | 아니오 | 기밀 또는 공개 이슈를 필터링합니다. |
created_after
| 날짜/시간 | 아니오 | 주어진 시간 이후에 생성된 이슈를 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z )으로 예상됩니다.
|
created_before
| 날짜/시간 | 아니오 | 주어진 시간 이전에 생성된 이슈를 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z )으로 예상됩니다.
|
due_date
| 문자열 | 아니오 | 마감일이 없거나 마감일이 지났거나 이번 주, 이번 달, 또는 이전 두 주에서 다음 달 사이의 마감일을 가진 이슈를 반환합니다. 0 (마감일 없음), any , today , tomorrow , overdue , week , month , next_month_and_previous_two_weeks 를 허용합니다.
|
epic_id
| 정수 | 아니오 | 주어진 에픽 ID와 연관된 이슈를 반환합니다. None 은 에픽과 연관되지 않은 이슈를 반환합니다. Any 는 에픽과 연관된 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
|
iids[]
| 정수 배열 | 아니오 | 주어진 iid 를 가진 이슈만 반환합니다.
|
issue_type
| 문자열 | 아니오 | 특정 유형의 이슈로 필터링합니다. issue , incident , test_case , task 중 하나.
|
iteration_id
| 정수 | 아니오 | 주어진 반복 ID에 할당된 이슈를 반환합니다. None 은 반복에 속하지 않은 이슈를 반환합니다. Any 는 반복에 속한 이슈를 반환합니다. 상호 배타적입니다 iteration_title 과. Premium 및 Ultimate 전용입니다.
|
iteration_title
| 문자열 | 아니오 | 주어진 제목을 가진 반복에 할당된 이슈를 반환합니다. iteration_id 와 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
|
labels
| 문자열 | 아니오 | 레이블 이름의 쉼표로 구분된 디렉터리으로, 반환되는 이슈가 모든 레이블을 가져야 합니다. None 은 레이블이 없는 모든 이슈를 나열합니다. Any 는 적어도 하나의 레이블이 있는 모든 이슈를 나열합니다. No+Label (사용 중단)은 레이블이 없는 모든 이슈를 나열합니다. 사전 정의된 이름은 대소문자를 구분하지 않습니다.
|
milestone
| 문자열 | 아니오 | 마일스톤 제목입니다. None 은 마일스톤이 지정되지 않은 모든 이슈를 나열합니다. Any 는 할당된 마일스톤이있는 모든 이슈를 나열합니다.
|
my_reaction_emoji
| 문자열 | 아니오 | 특정 emoji 로 인증된 사용자에 의해 반응된 이슈를 반환합니다. None 은 반응이 없는 이슈를 반환합니다. Any 는 최소한 하나의 반응이 있는 이슈를 반환합니다.
|
not
| 해시 | 아니오 | 제공된 매개변수와 일치하지 않는 이슈를 반환합니다. labels , milestone , author_id , author_username , assignee_id , assignee_username , my_reaction_emoji , search , in 을 허용합니다.
|
order_by
| 문자열 | 아니오 |
created_at , updated_at , priority , due_date , relative_position , label_priority , milestone_due , popularity , weight 필드로 이슈를 정렬하여 반환합니다. 기본값은 created_at 입니다.
|
scope
| 문자열 | 아니오 | 주어진 범위에 대한 이슈를 반환합니다: created_by_me , assigned_to_me 또는 all . 기본값은 all 입니다.
|
search
| 문자열 | 아니오 | 프로젝트 이슈를 title 및 description 에 대해 검색합니다.
|
sort
| 문자열 | 아니오 |
asc 또는 desc 순서대로 정렬된 이슈를 반환합니다. 기본값은 desc 입니다.
|
state
| 문자열 | 아니오 | 모든 이슈를 반환하거나 opened 또는 closed 만 반환합니다.
|
updated_after
| 날짜/시간 | 아니오 | 주어진 시간 이후에 업데이트된 이슈를 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z )으로 예상됩니다.
|
updated_before
| 날짜/시간 | 아니오 | 주어진 시간 이전에 업데이트된 이슈를 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z )으로 예상됩니다.
|
weight
| 정수 | 아니오 | 지정된 weight 와 함께 이슈를 반환합니다. None 은 가중치가 할당되지 않은 이슈를 반환합니다. Any 는 가중치가 할당된 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
|
with_labels_details
| 부울 | 아니오 |
true 인 경우 응답은 레이블 필드의 각 레이블에 대해 더 많은 세부 정보를 반환합니다: :name , :color , :description , :description_html , :text_color . 기본값은 false 입니다.
|
예제 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/4/issues"
예제 응답:
[
{
"project_id" : 4,
"milestone" : {
"due_date" : null,
"project_id" : 4,
"state" : "closed",
"description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
"iid" : 3,
"id" : 11,
"title" : "v3.0",
"created_at" : "2016-01-04T15:31:39.788Z",
"updated_at" : "2016-01-04T15:31:39.788Z"
},
"author" : {
"state" : "active",
"web_url" : "https://gitlab.example.com/root",
"avatar_url" : null,
"username" : "root",
"id" : 1,
"name" : "Administrator"
},
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"state" : "closed",
"iid" : 1,
"assignees" : [{
"avatar_url" : null,
"web_url" : "https://gitlab.example.com/lennie",
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
}],
"assignee" : {
"avatar_url" : null,
"web_url" : "https://gitlab.example.com/lennie",
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
},
"type" : "ISSUE",
"labels" : ["foo", "bar"],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"id" : 41,
"title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
"updated_at" : "2016-01-04T15:31:46.176Z",
"created_at" : "2016-01-04T15:31:46.176Z",
"closed_at" : "2016-01-05T15:31:46.176Z",
"closed_by" : {
"state" : "active",
"web_url" : "https://gitlab.example.com/root",
"avatar_url" : null,
"username" : "root",
"id" : 1,
"name" : "Administrator"
},
"user_notes_count": 1,
"due_date": "2016-07-22",
"web_url": "http://gitlab.example.com/my-group/my-project/issues/1",
"references": {
"short": "#1",
"relative": "#1",
"full": "my-group/my-project#1"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"has_tasks": true,
"task_status": "10 of 15 tasks completed",
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"_links":{
"self":"http://gitlab.example.com/api/v4/projects/4/issues/41",
"notes":"http://gitlab.example.com/api/v4/projects/4/issues/41/notes",
"award_emoji":"http://gitlab.example.com/api/v4/projects/4/issues/41/award_emoji",
"project":"http://gitlab.example.com/api/v4/projects/4",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"task_completion_status":{
"count":0,
"completed_count":0
}
}
]
GitLab Premium 또는 Ultimate에서 생성된 이슈에는 weight
속성이 포함됩니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"weight": null,
...
}
]
GitLab Premium 또는 Ultimate에서 생성된 이슈에는 epic
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"epic_iid" : 5, //deprecated, use `epic` attribute의 `iid` 사용
"epic": {
"id" : 42,
"iid" : 5,
"title": "My epic epic",
"url" : "/groups/h5bp/-/epics/5",
"group_id": 8
},
...
}
GitLab Ultimate에서 생성된 이슈에는 health_status
속성이 포함됩니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"health_status": "at_risk",
...
}
]
assignee
열은 사용되지 않습니다. 이제 GitLab EE API에 따라 단일 크기의 배열 assignees
로 표시됩니다.단일 이슈
관리자 전용입니다.
단일 이슈를 가져옵니다.
이 방법은 개인 액세스 토큰을 사용하는 것이 좋습니다.
GET /issues/:id
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수 | 예 | 이슈의 ID. |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/issues/41"
예시 응답:
{
"id": 1,
"milestone": {
"due_date": null,
"project_id": 4,
"state": "closed",
"description": "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
"iid": 3,
"id": 11,
"title": "v3.0",
"created_at": "2016-01-04T15:31:39.788Z",
"updated_at": "2016-01-04T15:31:39.788Z",
"closed_at": "2016-01-05T15:31:46.176Z"
},
"author": {
"state": "active",
"web_url": "https://gitlab.example.com/root",
"avatar_url": null,
"username": "root",
"id": 1,
"name": "Administrator"
},
"description": "Omnis vero earum sunt corporis dolor et placeat.",
"state": "closed",
"iid": 1,
"assignees": [
{
"avatar_url": null,
"web_url": "https://gitlab.example.com/lennie",
"state": "active",
"username": "lennie",
"id": 9,
"name": "Dr. Luella Kovacek"
}
],
"type": "ISSUE",
"labels": [],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"title": "Ut commodi ullam eos dolores perferendis nihil sunt.",
"updated_at": "2016-01-04T15:31:46.176Z",
"created_at": "2016-01-04T15:31:46.176Z",
"closed_at": null,
"closed_by": null,
"subscribed": false,
"user_notes_count": 1,
"due_date": null,
"web_url": "http://example.com/my-group/my-project/issues/1",
"references": {
"short": "#1",
"relative": "#1",
"full": "my-group/my-project#1"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"task_completion_status": {
"count": 0,
"completed_count": 0
},
"weight": null,
"has_tasks": false,
"_links": {
"self": "http://gitlab.example:3000/api/v4/projects/1/issues/1",
"notes": "http://gitlab.example:3000/api/v4/projects/1/issues/1/notes",
"award_emoji": "http://gitlab.example:3000/api/v4/projects/1/issues/1/award_emoji",
"project": "http://gitlab.example:3000/api/v4/projects/1",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"moved_to_id": null,
"service_desk_reply_to": "service.desk@gitlab.com"
}
GitLab Premium 또는 Ultimate 사용자가 생성한 이슈에는 weight
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"weight": null,
...
}
GitLab Premium 또는 Ultimate 사용자가 생성한 이슈에는 epic
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"epic": {
"epic_iid" : 5, //deprecated, use `iid` of the `epic` attribute
"epic": {
"id" : 42,
"iid" : 5,
"title": "My epic epic",
"url" : "/groups/h5bp/-/epics/5",
"group_id": 8
},
...
}
GitLab Ultimate 사용자는 health_status
속성도 볼 수 있습니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"health_status": "on_track",
...
}
]
assignee
열은 사용이 중단되었습니다. 이제 GitLab EE API에 맞게 단일 크기의 배열인 assignees
로 표시됩니다.단일 프로젝트 이슈
단일 프로젝트 이슈를 가져옵니다.
프로젝트가 비공개이거나 이슈가 기밀일 경우, 권한 부여를 위해 자격 증명을 제공해야 합니다. 이를 하는 선호하는 방법은 개인 액세스 토큰을 사용하는 것입니다.
GET /projects/:id/issues/:issue_iid
지원되는 속성:
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | Yes | 인증된 사용자가 소유한 프로젝트의 전역 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | Yes | 프로젝트의 이슈의 내부 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/4/issues/41"
예시 응답:
{
"project_id" : 4,
"milestone" : {
"due_date" : null,
"project_id" : 4,
"state" : "closed",
"description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
"iid" : 3,
"id" : 11,
"title" : "v3.0",
"created_at" : "2016-01-04T15:31:39.788Z",
"updated_at" : "2016-01-04T15:31:39.788Z",
"closed_at" : "2016-01-05T15:31:46.176Z"
},
"author" : {
"state" : "active",
"web_url" : "https://gitlab.example.com/root",
"avatar_url" : null,
"username" : "root",
"id" : 1,
"name" : "Administrator"
},
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"state" : "closed",
"iid" : 1,
"assignees" : [{
"avatar_url" : null,
"web_url" : "https://gitlab.example.com/lennie",
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
}],
"assignee" : {
"avatar_url" : null,
"web_url" : "https://gitlab.example.com/lennie",
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
},
"type" : "ISSUE",
"labels" : [],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"id" : 41,
"title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
"updated_at" : "2016-01-04T15:31:46.176Z",
"created_at" : "2016-01-04T15:31:46.176Z",
"closed_at" : null,
"closed_by" : null,
"subscribed": false,
"user_notes_count": 1,
"due_date": null,
"web_url": "http://gitlab.example.com/my-group/my-project/issues/1",
"references": {
"short": "#1",
"relative": "#1",
"full": "my-group/my-project#1"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"_links": {
"self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
"notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
"award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
"project": "http://gitlab.example.com/api/v4/projects/1",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"task_completion_status":{
"count":0,
"completed_count":0
}
}
GitLab Premium 또는 Ultimate 사용자가 만든 이슈에는 weight
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"weight": null,
...
}
GitLab Premium 또는 Ultimate 사용자가 만든 이슈에는 epic
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"epic_iid" : 5, //deprecated, use `epic` 속성의 `iid`를 사용하세요.
"epic": {
"id" : 42,
"iid" : 5,
"title": "내 epic epic",
"url" : "/groups/h5bp/-/epics/5",
"group_id": 8
},
...
}
GitLab Ultimate 사용자는 health_status
속성도 볼 수 있습니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"health_status": "on_track",
...
}
]
assignee
열은 더 이상 사용되지 않습니다. 이제 GitLab EE API에 맞추기 위해 단일 크기의 배열 assignees
로 표시합니다.새 이슈
새 프로젝트 이슈를 생성합니다.
POST /projects/:id/issues
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩 된 경로 |
assignee_id
| 정수 | 아니요 | 이슈를 할당할 사용자의 ID입니다. GitLab Free에만 표시됩니다. |
assignee_ids
| 정수 배열 | 아니요 | 이슈를 할당할 사용자들의 ID입니다. Premium 및 Ultimate 전용. |
confidential
| 불리언 | 아니요 | 이슈를 비밀으로 설정합니다. 기본값은 false 입니다.
|
created_at
| 문자열 | 아니요 | 이슈가 생성된 날짜 및 시간 입니다. ISO 8601 형식의 날짜 및 시간 문자열, 예를 들어 2016-03-11T03:45:40Z . 관리자 또는 프로젝트/그룹 소유자 권한이 필요합니다.
|
description
| 문자열 | 아니요 | 이슈의 설명입니다. 1,048,576자로 제한됩니다. |
discussion_to_resolve
| 문자열 | 아니요 | 해결할 토론의 ID입니다. 이것은 이슈에 기본 설명을 채우고 토론을 해결으로 표시합니다. merge_request_to_resolve_discussions_of 와 함께 사용하세요.
|
due_date
| 문자열 | 아니요 | 마감일입니다. YYYY-MM-DD 형식의 날짜 및 시간 문자열, 예를 들어 2016-03-11 .
|
epic_id
| 정수 | 아니요 | 이슈를 추가 할 에픽의 ID입니다. 유효한 값은 0 이상입니다. Premium 및 Ultimate 전용. |
epic_iid
| 정수 | 아니요 | 이슈를 추가 할 에픽의 IID입니다. 유효한 값은 0 이상입니다. (API 버전 5에서 삭제 예정). Premium 및 Ultimate 전용. |
iid
| 정수/문자열 | 아니요 | 프로젝트의 이슈의 내부 ID입니다.(관리자 또는 프로젝트 소유권이 필요). |
issue_type
| 문자열 | 아니요 | 이슈의 유형입니다. issue , incident , test_case 또는 task 중 하나입니다. 기본값은 issue 입니다.
|
labels
| 문자열 | 아니요 | 이슈에 대한 쉼표로 구분된 레이블 이름입니다. |
merge_request_to_resolve_discussions_of
| 정수 | 아니요 | 이슈와 관련된 모든 토론을 해결 할 머지 요청의 IID입니다. 이것은 이슈에 기본 설명을 채우고 모든 토론을 해결됨으로 표시합니다. 설명 또는 제목을 전달할 때 이러한 값들은 기본 값보다 우선합니다. |
milestone_id
| 정수 | 아니요 | 이슈를 할당 할 마일스톤의 글로벌 ID입니다. 마일스톤과 연관된 milestone_id 를 찾으려면 마일스톤이 할당된 이슈를 보고 API를 사용하여 이슈의 세부 정보를 검색합니다.
|
title
| 문자열 | 예 | 이슈의 제목입니다. |
weight
| 정수 | 아니요 | 이슈의 가중치입니다. 유효한 값은 0 이상입니다. Premium 및 Ultimate 전용. |
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/4/issues?title=Issues%20with%20auth&labels=bug"
예시 응답:
{
"project_id" : 4,
"id" : 84,
"created_at" : "2016-01-07T12:44:33.959Z",
"iid" : 14,
"title" : "Issues with auth",
"state" : "opened",
"assignees" : [],
"assignee" : null,
"type" : "ISSUE",
"labels" : [
"bug"
],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"state" : "active",
"web_url" : "https://gitlab.example.com/eileen.lowe",
"id" : 18,
"username" : "eileen.lowe"
},
"description" : null,
"updated_at" : "2016-01-07T12:44:33.959Z",
"closed_at" : null,
"closed_by" : null,
"milestone" : null,
"subscribed" : true,
"user_notes_count": 0,
"due_date": null,
"web_url": "http://gitlab.example.com/my-group/my-project/issues/14",
"references": {
"short": "#14",
"relative": "#14",
"full": "my-group/my-project#14"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"_links": {
"self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
"notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
"award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
"project": "http://gitlab.example.com/api/v4/projects/1",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"task_completion_status":{
"count":0,
"completed_count":0
}
}
GitLab Premium 또는 Ultimate 사용자가 만든 이슈에는 weight
속성이 포함됩니다:
{
"project_id" : 4,
"description" : null,
"weight": null,
...
}
GitLab Premium 또는 Ultimate 사용자가 만든 이슈에는 epic
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"epic_iid" : 5, //deprecated, use `iid` of the `epic` attribute
"epic": {
"id" : 42,
"iid" : 5,
"title": "My epic epic",
"url" : "/groups/h5bp/-/epics/5",
"group_id": 8
},
...
}
GitLab Ultimate 사용자가 만든 이슈에는 health_status
속성이 포함됩니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"health_status": "on_track",
...
}
]
assignee
열은 사용되지 않습니다. 이제 GitLab EE API와 일치하도록 단일 크기의 배열 assignees
로 표시됩니다.요율 한도
남용을 피하기 위해 사용자는 분당 특정 수의 Create
요청으로 제한될 수 있습니다.
이슈 요율 한도를 확인하세요.
이슈 편집
기존 프로젝트 이슈를 업데이트합니다. 이 요청은 또한 state_event
를 사용하여 이슈를 닫거나 다시 여는 데에 사용됩니다.
요청이 성공하려면 다음 매개변수 중 적어도 하나가 필요합니다:
:assignee_id
:assignee_ids
:confidential
:created_at
:description
:discussion_locked
:due_date
:issue_type
:labels
:milestone_id
:state_event
:title
PUT /projects/:id/issues/:issue_iid
지원되는 속성:
속성 | 유형 | 필요 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 필수 | 인증된 사용자가 소유한 프로젝트의 전역 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 필수 | 프로젝트 이슈의 내부 ID |
add_labels
| 문자열 | 아니요 | 이슈에 추가할 쉼표로 구분된 레이블 이름 |
assignee_ids
| 정수 배열 | 아니요 | 이슈를 할당할 사용자의 ID. 모든 할당 사용자를 할당 해제하려면 0 으로 설정하거나 빈 값을 제공하세요.
|
confidential
| 부울 | 아니요 | 이슈를 비공개로 업데이트합니다. |
description
| 문자열 | 아니요 | 이슈의 설명. 최대 1,048,576자로 제한됩니다. |
discussion_locked
| 부울 | 아니요 | 이슈의 토론이 잠겨 있는지를 나타내는 플래그. 토론이 잠겨 있으면 프로젝트 구성원만 주석을 추가하거나 편집할 수 있습니다. |
due_date
| 문자열 | 아니요 | 마감일. 예를 들어 2016-03-11 과 같은 YYYY-MM-DD 형식의 날짜 및 시간 문자열
|
epic_id
| 정수 | 아니요 | 이슈를 추가할 에픽의 ID. 유효한 값은 0 이상입니다. Premium 및 Ultimate 전용. |
epic_iid
| 정수 | 아니요 | 이슈를 추가할 에픽의 IID. 유효한 값은 0 이상입니다. (API 버전 5에서 제거 예정). Premium 및 Ultimate 전용. |
issue_type
| 문자열 | 아니요 | 이슈 유형을 업데이트합니다. issue , incident , test_case , 또는 task 중 하나.
|
labels
| 문자열 | 아니요 | 이슈에 대한 쉼표로 구분된 레이블 이름. 모든 레이블을 할당 해제하려면 빈 문자열로 설정하세요. |
milestone_id
| 정수 | 아니요 | 이슈를 할당할 마일스톤의 전역 ID. 마일스톤을 할당 해제하려면 0 또는 빈 값을 제공하세요.
|
remove_labels
| 문자열 | 아니요 | 이슈에서 제거할 쉼표로 구분된 레이블 이름 |
state_event
| 문자열 | 아니요 | 이슈의 상태 이벤트. 이슈를 닫으려면 close 를 사용하고 다시 여는 경우 reopen 을 사용하세요.
|
title
| 문자열 | 아니요 | 이슈의 제목 |
updated_at
| 문자열 | 아니요 | 이슈가 업데이트된 시간. ISO 8601 형식의 날짜 및 시간 문자열. 예를 들어 2016-03-11T03:45:40Z (관리자 또는 프로젝트 소유자 권한이 필요함). 빈 문자열 또는 null 값은 허용되지 않습니다.
|
weight
| 정수 | 아니요 | 이슈의 가중치. 유효한 값은 0 이상입니다. Premium 및 Ultimate 전용. |
예시 요청:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/4/issues/85?state_event=close"
예시 응답:
{
"created_at" : "2016-01-07T12:46:01.410Z",
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"username" : "eileen.lowe",
"id" : 18,
"state" : "active",
"web_url" : "https://gitlab.example.com/eileen.lowe"
},
"state" : "closed",
"title" : "Issues with auth",
"project_id" : 4,
"description" : null,
"updated_at" : "2016-01-07T12:55:16.213Z",
"closed_at" : "2016-01-08T12:55:16.213Z",
"closed_by" : {
"state" : "active",
"web_url" : "https://gitlab.example.com/root",
"avatar_url" : null,
"username" : "root",
"id" : 1,
"name" : "Administrator"
},
"iid" : 15,
"labels" : [
"bug"
],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"id" : 85,
"assignees" : [],
"assignee" : null,
"milestone" : null,
"subscribed" : true,
"user_notes_count": 0,
"due_date": "2016-07-22",
"web_url": "http://gitlab.example.com/my-group/my-project/issues/15",
"references": {
"short": "#15",
"relative": "#15",
"full": "my-group/my-project#15"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"_links": {
"self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
"notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
"award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
"project": "http://gitlab.example.com/api/v4/projects/1",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"task_completion_status":{
"count":0,
"completed_count":0
}
}
GitLab Premium 또는 Ultimate에서 생성된 이슈에는 weight
속성이 포함됩니다:
{
"project_id" : 4,
"description" : null,
"weight": null,
...
}
GitLab Premium 또는 Ultimate에서 생성된 이슈에는 epic
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"epic_iid" : 5, //제거 예정, `epic` 속성의 `iid`를 사용하세요
"epic": {
"id" : 42,
"iid" : 5,
"title": "My epic epic",
"url" : "/groups/h5bp/-/epics/5",
"group_id": 8
},
...
}
GitLab Ultimate에서 생성된 이슈에는 health_status
속성이 포함됩니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"health_status": "on_track",
...
}
]
assignee
열은 폐기되었습니다. 이제 GitLab EE API에 적합하도록 단일 크기의 배열 assignees
로 표시합니다.이슈 삭제
관리자 및 프로젝트 소유자 전용입니다.
이슈를 삭제합니다.
DELETE /projects/:id/issues/:issue_iid
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 전체 ID 또는 URL-인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트 이슈의 내부 ID |
예시 요청:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/4/issues/85"
성공하면 204 No Content
을 반환합니다.
이슈 재정렬
이슈를 재정렬합니다. 매뉴얼으로 이슈 정렬을 할 때 결과를 확인할 수 있습니다.
PUT /projects/:id/issues/:issue_iid/reorder
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 전체 ID 또는 URL-인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트 이슈의 내부 ID |
move_after_id
| 정수 | 아니오 | 이 문제 뒤에 배치해야 하는 프로젝트의 이슈의 전체 ID |
move_before_id
| 정수 | 아니오 | 이 이슈 앞에 배치해야 하는 프로젝트의 이슈의 전체 ID |
예시 요청:
curl --request PUT \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/4/issues/85/reorder?move_after_id=51&move_before_id=92"
이슈 이동
이슈를 다른 프로젝트로 이동합니다. 대상 프로젝트가 소스 프로젝트인 경우 또는 사용자의 권한이 충분하지 않은 경우 400
상태 코드와 함께 오류 메시지가 반환됩니다.
대상 프로젝트에 동일한 이름의 레이블 또는 마일스톤이 있는 경우 해당 레이블 또는 마일스톤이 이동되는 이슈에 할당됩니다.
POST /projects/:id/issues/:issue_iid/move
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 전체 ID 또는 URL-인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트 이슈의 내부 ID |
to_project_id
| 정수 | 예 | 새 프로젝트의 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--form to_project_id=5 \
--url "https://gitlab.example.com/api/v4/projects/4/issues/85/move"
예시 응답:
{
"id": 92,
"iid": 11,
"project_id": 5,
"title": "Sit voluptas tempora quisquam aut doloribus et.",
"description": "Repellat voluptas quibusdam voluptatem exercitationem.",
"state": "opened",
"created_at": "2016-04-05T21:41:45.652Z",
"updated_at": "2016-04-07T12:20:17.596Z",
"closed_at": null,
"closed_by": null,
"labels": [],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"milestone": null,
"assignees": [{
"name": "Miss Monserrate Beier",
"username": "axel.block",
"id": 12,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
"web_url": "https://gitlab.example.com/axel.block"
}],
"assignee": {
"name": "Miss Monserrate Beier",
"username": "axel.block",
"id": 12,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
"web_url": "https://gitlab.example.com/axel.block"
},
"type" : "ISSUE",
"author": {
"name": "Kris Steuber",
"username": "solon.cremin",
"id": 10,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/7a190fecbaa68212a4b68aeb6e3acd10?s=80&d=identicon",
"web_url": "https://gitlab.example.com/solon.cremin"
},
"due_date": null,
"web_url": "http://gitlab.example.com/my-group/my-project/issues/11",
"references": {
"short": "#11",
"relative": "#11",
"full": "my-group/my-project#11"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"_links": {
"self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
"notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
"award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
"project": "http://gitlab.example.com/api/v4/projects/1",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"task_completion_status":{
"count":0,
"completed_count":0
}
}
GitLab Premium 또는 Ultimate 사용자가 만든 이슈에는 weight
속성이 포함됩니다:
{
"project_id": 5,
"description": "Repellat voluptas quibusdam voluptatem exercitationem.",
"weight": null,
...
}
GitLab Premium 또는 Ultimate 사용자가 만든 이슈에는 epic
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"epic_iid" : 5, //deprecated, use `epic` 속성의 `iid`
"epic": {
"id" : 42,
"iid" : 5,
"title": "My epic epic",
"url" : "/groups/h5bp/-/epics/5",
"group_id": 8
},
...
}
GitLab Ultimate 사용자가 만든 이슈에는 health_status
속성이 포함됩니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"health_status": "on_track",
...
}
]
assignee
열은 사용되지 않습니다. 이제 GitLab EE API에 맞게 단일 크기의 assignees
로 표시됩니다.이슈 복제하기
지정된 프로젝트로 이슈를 복제합니다. 대상 프로젝트에 레이블 또는 마일스톤과 같은 동등한 기준이 포함되어 있는 경우 가능한 많은 데이터를 복사합니다.
권한이 충분하지 않은 경우, 상태 코드 400
과 함께 오류 메시지가 반환됩니다.
POST /projects/:id/issues/:issue_iid/clone
지원되는 속성:
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트의 이슈의 내부 ID |
to_project_id
| 정수 | 예 | 새 프로젝트의 ID |
with_notes
| 부울 | 아니오 | 이슈와 함께 노트를 복제합니다. 기본값은 false 입니다.
|
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/1/clone?with_notes=true&to_project_id=6"
예시 응답:
{
"id":290,
"iid":1,
"project_id":143,
"title":"foo",
"description":"closed",
"state":"opened",
"created_at":"2021-09-14T22:24:11.696Z",
"updated_at":"2021-09-14T22:24:11.696Z",
"closed_at":null,
"closed_by":null,
"labels":[
],
"milestone":null,
"assignees":[
{
"id":179,
"name":"John Doe2",
"username":"john",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/john"
}
],
"author":{
"id":179,
"name":"John Doe2",
"username":"john",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/john"
},
"type":"ISSUE",
"assignee":{
"id":179,
"name":"John Doe2",
"username":"john",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/john"
},
"user_notes_count":1,
"merge_requests_count":0,
"upvotes":0,
"downvotes":0,
"due_date":null,
"confidential":false,
"discussion_locked":null,
"issue_type":"issue",
"severity": "UNKNOWN",
"web_url":"https://gitlab.example.com/namespace1/project2/-/issues/1",
"time_stats":{
"time_estimate":0,
"total_time_spent":0,
"human_time_estimate":null,
"human_total_time_spent":null
},
"task_completion_status":{
"count":0,
"completed_count":0
},
"blocking_issues_count":0,
"has_tasks":false,
"_links":{
"self":"https://gitlab.example.com/api/v4/projects/143/issues/1",
"notes":"https://gitlab.example.com/api/v4/projects/143/issues/1/notes",
"award_emoji":"https://gitlab.example.com/api/v4/projects/143/issues/1/award_emoji",
"project":"https://gitlab.example.com/api/v4/projects/143",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"references":{
"short":"#1",
"relative":"#1",
"full":"namespace1/project2#1"
},
"subscribed":true,
"moved_to_id":null,
"service_desk_reply_to":null
}
알림
다음 요청은 이슈에 대한 이메일 알림과 관련이 있습니다.
이슈 구독하기
인증된 사용자를 이슈에 구독하여 알림을 받도록 합니다.
이미 해당 이슈를 구독한 경우, 상태 코드 304
가 반환됩니다.
POST /projects/:id/issues/:issue_iid/subscribe
지원되는 속성:
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 전역 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트의 이슈의 내부 ID |
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/subscribe"
예시 응답:
{
"id": 92,
"iid": 11,
"project_id": 5,
"title": "Sit voluptas tempora quisquam aut doloribus et.",
"description": "Repellat voluptas quibusdam voluptatem exercitationem.",
"state": "opened",
"created_at": "2016-04-05T21:41:45.652Z",
"updated_at": "2016-04-07T12:20:17.596Z",
"closed_at": null,
"closed_by": null,
"labels": [],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"milestone": null,
"assignees": [{
"name": "Miss Monserrate Beier",
"username": "axel.block",
"id": 12,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
"web_url": "https://gitlab.example.com/axel.block"
}],
"assignee": {
"name": "Miss Monserrate Beier",
"username": "axel.block",
"id": 12,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
"web_url": "https://gitlab.example.com/axel.block"
},
"type" : "ISSUE",
"author": {
"name": "Kris Steuber",
"username": "solon.cremin",
"id": 10,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/7a190fecbaa68212a4b68aeb6e3acd10?s=80&d=identicon",
"web_url": "https://gitlab.example.com/solon.cremin"
},
"due_date": null,
"web_url": "http://gitlab.example.com/my-group/my-project/issues/11",
"references": {
"short": "#11",
"relative": "#11",
"full": "my-group/my-project#11"
},
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
},
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"_links": {
"self": "http://gitlab.example.com/api/v4/projects/1/issues/2",
"notes": "http://gitlab.example.com/api/v4/projects/1/issues/2/notes",
"award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/2/award_emoji",
"project": "http://gitlab.example.com/api/v4/projects/1",
"closed_as_duplicate_of": "http://gitlab.example.com/api/v4/projects/1/issues/75"
},
"task_completion_status":{
"count":0,
"completed_count":0
}
}
GitLab Premium 또는 Ultimate에서 생성된 이슈에는 weight
속성이 포함됩니다:
{
"project_id": 5,
"description": "Repellat voluptas quibusdam voluptatem exercitationem.",
"weight": null,
...
}
GitLab Premium 또는 Ultimate에서 생성된 이슈에는 epic
속성이 포함됩니다:
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"epic_iid" : 5, //deprecated, use `iid` of the `epic` attribute
"epic": {
"id" : 42,
"iid" : 5,
"title": "My epic epic",
"url" : "/groups/h5bp/-/epics/5",
"group_id": 8
},
...
}
GitLab Ultimate에서 생성된 이슈에는 health_status
속성이 포함됩니다:
[
{
"project_id" : 4,
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"health_status": "on_track",
...
}
]
assignee
열은 사용되지 않습니다. 이제 GitLab EE API에 준수하기 위해 단일 크기의 배열 assignees
로 표시됩니다.이슈 구독 취소
인증된 사용자를 이슈 구독 해제하여 해당 이슈로부터 알림을 받지 않습니다. 사용자가 이 문제에 구독되지 않은 경우 상태 코드 304
가 반환됩니다.
POST /projects/:id/issues/:issue_iid/unsubscribe
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트의 이슈의 내부 ID |
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/unsubscribe"
예시 응답:
{
"id": 93,
"iid": 12,
"project_id": 5,
"title": "Incidunt et rerum ea expedita iure quibusdam.",
"description": "Et cumque architecto sed aut ipsam.",
"state": "opened",
"created_at": "2016-04-05T21:41:45.217Z",
"updated_at": "2016-04-07T13:02:37.905Z",
"labels": [],
"upvotes": 4,
"downvotes": 0,
"merge_requests_count": 0,
"milestone": null,
"assignee": {
"name": "Edwardo Grady",
"username": "keyon",
"id": 21,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/3e6f06a86cf27fa8b56f3f74f7615987?s=80&d=identicon",
"web_url": "https://gitlab.example.com/keyon"
},
"type" : "ISSUE",
"closed_at": null,
"closed_by": null,
"author": {
"name": "Vivian Hermann",
"username": "orville",
"id": 11,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/5224fd70153710e92fb8bcf79ac29d67?s=80&d=identicon",
"web_url": "https://gitlab.example.com/orville"
},
"subscribed": false,
"due_date": null,
"web_url": "http://gitlab.example.com/my-group/my-project/issues/12",
"references": {
"short": "#12",
"relative": "#12",
"full": "my-group/my-project#12"
},
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"task_completion_status":{
"count":0,
"completed_count":0
}
}
할 일 항목 생성
현재 사용자에 대한 이슈에 매뉴얼으로 할 일 항목을 만듭니다. 이미 해당 이슈에 대해 사용자에 대한 할 일 항목이 있는 경우 상태 코드 304
가 반환됩니다.
POST /projects/:id/issues/:issue_iid/todo
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트의 이슈의 내부 ID |
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/todo"
예시 응답:
{
"id": 112,
"project": {
"id": 5,
"name": "GitLab CI/CD",
"name_with_namespace": "GitLab Org / GitLab CI/CD",
"path": "gitlab-ci",
"path_with_namespace": "gitlab-org/gitlab-ci"
},
"author": {
"name": "Administrator",
"username": "root",
"id": 1,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "https://gitlab.example.com/root"
},
"action_name": "marked",
"target_type": "Issue",
"target": {
"id": 93,
"iid": 10,
"project_id": 5,
"title": "Vel voluptas atque dicta mollitia adipisci qui at.",
"description": "Tempora laboriosam sint magni sed voluptas similique.",
"state": "closed",
"created_at": "2016-06-17T07:47:39.486Z",
"updated_at": "2016-07-01T11:09:13.998Z",
"labels": [],
"milestone": {
"id": 26,
"iid": 1,
"project_id": 5,
"title": "v0.0",
"description": "Accusantium nostrum rerum quae quia quis nesciunt suscipit id.",
"state": "closed",
"created_at": "2016-06-17T07:47:33.832Z",
"updated_at": "2016-06-17T07:47:33.832Z",
"due_date": null
},
"assignees": [{
"name": "Jarret O'Keefe",
"username": "francisca",
"id": 14,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/a7fa515d53450023c83d62986d0658a8?s=80&d=identicon",
"web_url": "https://gitlab.example.com/francisca"
}],
"assignee": {
"name": "Jarret O'Keefe",
"username": "francisca",
"id": 14,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/a7fa515d53450023c83d62986d0658a8?s=80&d=identicon",
"web_url": "https://gitlab.example.com/francisca"
},
"type" : "ISSUE",
"author": {
"name": "Maxie Medhurst",
"username": "craig_rutherford",
"id": 12,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
"web_url": "https://gitlab.example.com/craig_rutherford"
},
"subscribed": true,
"user_notes_count": 7,
"upvotes": 0,
"downvotes": 0,
"merge_requests_count": 0,
"due_date": null,
"web_url": "http://gitlab.example.com/my-group/my-project/issues/10",
"references": {
"short": "#10",
"relative": "#10",
"full": "my-group/my-project#10"
},
"confidential": false,
"discussion_locked": false,
"issue_type": "issue",
"severity": "UNKNOWN",
"task_completion_status":{
"count":0,
"completed_count":0
}
},
"target_url": "https://gitlab.example.com/gitlab-org/gitlab-ci/issues/10",
"body": "Vel voluptas atque dicta mollitia adipisci qui at.",
"state": "pending",
"created_at": "2016-07-01T11:09:13.992Z"
}
assignee
열은 더 이상 사용되지 않습니다. 이제 우리는 GitLab EE API에 준수하기 위해 단일 크기의 배열 assignees
로 표시합니다.이슈를 에픽으로 승격시키기
/promote
빠른 조치를 사용하여 주석을 추가하여 이슈를 에픽으로 승격합니다.
이슈를 에픽으로 승격하는 방법에 대한 자세한 정보는 이슈를 에픽으로 승격시키기를 참조하세요.
POST /projects/:id/issues/:issue_iid/notes
지원되는 속성:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로입니다. |
issue_iid
| integer | 예 | 프로젝트의 이슈의 내부 ID입니다. |
body
| String | 예 | 노트의 내용입니다. 새 줄에서 /promote 를 포함해야 합니다. 노트에 /promote 만 포함되어 있으면 이슈가 승격되지만 주석은 추가되지 않습니다. 그렇지 않으면 다른 줄이 주석을 형성합니다.
|
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/11/notes?body=Lets%20promote%20this%20to%20an%20epic%0A%0A%2Fpromote"
예시 응답:
{
"id":699,
"type":null,
"body":"Lets promote this to an epic",
"attachment":null,
"author": {
"id":1,
"name":"Alexandra Bashirian",
"username":"eileen.lowe",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url":"https://gitlab.example.com/eileen.lowe"
},
"created_at":"2020-12-03T12:27:17.844Z",
"updated_at":"2020-12-03T12:27:17.844Z",
"system":false,
"noteable_id":461,
"noteable_type":"Issue",
"resolvable":false,
"confidential":false,
"noteable_iid":33,
"commands_changes": {
"promote_to_epic":true
}
}
시간 추적
다음 요청은 이슈에 대한 시간 추적과 관련이 있습니다.
이슈에 대한 시간 추정 설정
이 문제에 대한 작업 예상 시간을 설정합니다.
POST /projects/:id/issues/:issue_iid/time_estimate
지원되는 속성:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
duration
| string | 예 | 사람이 이해할 수 있는 형식으로 된 기간입니다. 예: 3h30m
|
id
| integer/string | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로입니다. |
issue_iid
| integer | 예 | 프로젝트의 이슈의 내부 ID입니다. |
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/time_estimate?duration=3h30m"
예시 응답:
{
"human_time_estimate": "3h 30m",
"human_total_time_spent": null,
"time_estimate": 12600,
"total_time_spent": 0
}
이슈에 대한 시간 추정 재설정
이 문제에 대한 예상 시간을 0초로 재설정합니다.
POST /projects/:id/issues/:issue_iid/reset_time_estimate
지원되는 속성:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로입니다. |
issue_iid
| integer | 예 | 프로젝트의 이슈의 내부 ID입니다. |
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/reset_time_estimate"
예시 응답:
{
"human_time_estimate": null,
"human_total_time_spent": null,
"time_estimate": 0,
"total_time_spent": 0
}
이슈에 대한 소요 시간 추가
이 문제에 대한 소요 시간을 추가합니다.
POST /projects/:id/issues/:issue_iid/add_spent_time
지원되는 속성:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
duration
| string | 예 | 사람이 이해할 수 있는 형식으로 된 기간입니다. 예: 3h30m
|
id
| integer/string | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로입니다. |
issue_iid
| integer | 예 | 프로젝트의 이슈의 내부 ID입니다. |
summary
| string | 아니오 | 시간이 소요된 내용을 요약합니다. |
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/add_spent_time?duration=1h"
예시 응답:
{
"human_time_estimate": null,
"human_total_time_spent": "1h",
"time_estimate": 0,
"total_time_spent": 3600
}
이슈에 대한 총 소요 시간 재설정
이 문제의 총 소요 시간을 0초로 재설정합니다.
POST /projects/:id/issues/:issue_iid/reset_spent_time
지원되는 속성:
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 네 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 네 | 프로젝트 이슈의 내부 ID |
예시 요청:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/reset_spent_time"
예시 응답:
{
"human_time_estimate": null,
"human_total_time_spent": null,
"time_estimate": 0,
"total_time_spent": 0
}
시간 추적 통계 가져오기
인간이 읽기 쉬운 형식(예: 1시간 30분
)과 초 단위로 이슈에 대한 시간 추적 통계를 가져옵니다.
프로젝트가 비공개이거나 이슈가 기밀인 경우, 권한 부여를 위해 자격 증명을 제공해야 합니다. 이를 위한 선호되는 방법은 개인 액세스 토큰을 사용하는 것입니다.
GET /projects/:id/issues/:issue_iid/time_stats
지원되는 속성:
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 네 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 네 | 프로젝트 이슈의 내부 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/time_stats"
예시 응답:
{
"human_time_estimate": "2시간",
"human_total_time_spent": "1시간",
"time_estimate": 7200,
"total_time_spent": 3600
}
Merge Request
다음 요청은 이슈와 Merge Request 사이의 관계와 관련이 있습니다.
이슈와 관련된 Merge Request 디렉터리
이 문제와 관련된 모든 Merge Request을 가져옵니다.
프로젝트가 비공개이거나 이슈가 기밀인 경우, 권한 부여를 위해 자격 증명을 제공해야 합니다. 이를 위한 선호되는 방법은 개인 액세스 토큰을 사용하는 것입니다.
GET /projects/:id/issues/:issue_iid/related_merge_requests
지원되는 속성:
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 네 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 네 | 프로젝트 이슈의 내부 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/issues/11/related_merge_requests"
예시 응답:
[
{
"id": 29,
"iid": 11,
"project_id": 1,
"title": "Provident eius eos blanditiis consequatur neque odit.",
...
### 특정 이슈를 Merge시킬 때 해당 이슈를 닫는 Merge Request 디렉터리
Merge시 특정 이슈를 닫는 모든 Merge Request을 가져옵니다.
프로젝트가 비공개이거나 이슈가 비밀일 경우, 권한 부여를 위해 자격 증명을 제공해야 합니다.
이를 위한 권장 방법은 [개인 액세스 토큰](../user/profile/personal_access_tokens.md)을 사용하는 것입니다.
```plaintext
GET /projects/:id/issues/:issue_iid/closed_by
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩 된 경로 |
issue_iid
| 정수 | 예 | 프로젝트 이슈의 내부 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/issues/11/closed_by"
예시 응답:
[
{
"id": 6471,
"iid": 6432,
"project_id": 1,
"title": "add a test for cgi lexer options",
"description": "closes #11",
"state": "opened",
"created_at": "2017-04-06T18:33:34.168Z",
"updated_at": "2017-04-09T20:10:24.983Z",
"target_branch": "main",
"source_branch": "feature.custom-highlighting",
"upvotes": 0,
...
이슈에 참여하는 참가자 디렉터리
이슈에 참여하는 사용자를 나열합니다.
프로젝트가 비공개이거나 이슈가 비밀일 경우, 권한 부여를 위해 자격 증명을 제공해야 합니다. 이를 위한 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.
GET /projects/:id/issues/:issue_iid/participants
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트 이슈의 내부 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
-url "https://gitlab.example.com/api/v4/projects/5/issues/93/participants"
예시 응답:
[
{
"id": 1,
"name": "John Doe1",
"username": "user1",
"state": "active",
...
},
...
]
이슈에 대한 코멘트
코멘트를 사용하여 상호 작용합니다. Notes API를 사용합니다.
사용자 에이전트 세부 정보 가져오기
관리자만 사용할 수 있습니다.
이슈를 생성한 사용자의 사용자 에이전트 문자열과 IP를 가져옵니다. 스팸 추적에 사용됩니다.
GET /projects/:id/issues/:issue_iid/user_agent_detail
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 인증된 사용자가 소유한 프로젝트의 글로벌 ID 또는 URL 인코딩된 경로 |
issue_iid
| 정수 | 예 | 프로젝트 이슈의 내부 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/user_agent_detail"
예시 응답:
{
"user_agent": "AppleWebKit/537.36",
"ip_address": "127.0.0.1",
"akismet_submitted": false
}
이슈 상태 이벤트 디렉터리
어떤 상태가 설정되었는지, 누가 그렇게 했는지, 그리고 언제 일어났는지를 추적하려면 리소스 상태 이벤트 API를 사용하세요.
사건
다음 요청은 사건에 대해서만 사용할 수 있습니다.
메트릭 이미지 업로드
사건에 대해서만 사용할 수 있습니다.
메트릭 차트의 스크린샷을 업로드하여 사건의 메트릭 탭에 표시합니다. 이미지를 업로드하면 이미지에 텍스트 또는 원본 그래프에 대한 링크를 연결할 수 있습니다. URL을 추가하면 업로드된 이미지 위의 하이퍼링크를 선택하여 원본 그래프에 액세스할 수 있습니다.
POST /projects/:id/issues/:issue_iid/metric_images
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 인증된 사용자가 소유한 프로젝트의 전역 ID 또는 URL 인코딩된 경로 |
issue_iid
| integer | 예 | 프로젝트 이슈의 내부 ID |
file
| file | 예 | 업로드할 이미지 파일 |
url
| string | 아니요 | 더 많은 메트릭 정보를 보기 위한 URL |
url_text
| string | 아니요 | 이미지 또는 URL에 대한 설명 |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--form 'file=@/path/to/file.png' \
--form 'url=http://example.com' \
--form 'url_text=Example website' \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/metric_images"
예시 응답:
{
"id": 23,
"created_at": "2020-11-13T00:06:18.084Z",
"filename": "file.png",
"file_path": "/uploads/-/system/issuable_metric_image/file/23/file.png",
"url": "http://example.com",
"url_text": "Example website"
}
메트릭 이미지 디렉터리
사건에 대해서만 사용할 수 있습니다.
사건의 메트릭 탭에 표시된 메트릭 차트의 스크린샷을 나열합니다.
GET /projects/:id/issues/:issue_iid/metric_images
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 인증된 사용자가 소유한 프로젝트의 전역 ID 또는 URL 인코딩된 경로 |
issue_iid
| integer | 예 | 프로젝트 이슈의 내부 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
-url "https://gitlab.example.com/api/v4/projects/5/issues/93/metric_images"
예시 응답:
[
{
"id": 17,
"created_at": "2020-11-12T20:07:58.156Z",
"filename": "sample_2054",
"file_path": "/uploads/-/system/issuable_metric_image/file/17/sample_2054.png",
"url": "example.com/metric"
},
{
"id": 18,
"created_at": "2020-11-12T20:14:26.441Z",
"filename": "sample_2054",
"file_path": "/uploads/-/system/issuable_metric_image/file/18/sample_2054.png",
"url": "example.com/metric"
}
]
메트릭 이미지 업데이트
사건에 대해서만 사용할 수 있습니다.
사건의 메트릭 탭에 표시된 메트릭 차트의 스크린샷의 속성을 편집합니다.
PUT /projects/:id/issues/:issue_iid/metric_images/:image_id
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 인증된 사용자가 소유한 프로젝트의 전역 ID 또는 URL 인코딩된 경로 |
issue_iid
| integer | 예 | 프로젝트 이슈의 내부 ID |
image_id
| integer | 예 | 이미지의 ID |
url
| string | 아니요 | 더 많은 메트릭 정보를 보기 위한 URL |
url_text
| string | 아니요 | 이미지 또는 URL에 대한 설명 |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--request PUT \
--form 'url=http://example.com' \
--form 'url_text=Example website' \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/metric_images/1"
예시 응답:
{
"id": 23,
"created_at": "2020-11-13T00:06:18.084Z",
"filename": "file.png",
"file_path": "/uploads/-/system/issuable_metric_image/file/23/file.png",
"url": "http://example.com",
"url_text": "Example website"
}
메트릭 이미지 삭제
사건에 대해서만 사용할 수 있습니다.
사건의 메트릭 탭에 표시된 메트릭 차트의 스크린샷을 삭제합니다.
DELETE /projects/:id/issues/:issue_iid/metric_images/:image_id
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 인증된 사용자가 소유한 프로젝트의 전역 ID 또는 URL 인코딩된 경로 |
issue_iid
| integer | 예 | 프로젝트 이슈의 내부 ID |
image_id
| integer | 예 | 이미지의 ID |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--request DELETE \
--url "https://gitlab.example.com/api/v4/projects/5/issues/93/metric_images/1"
다음 상태 코드를 반환할 수 있습니다:
- 이미지가 성공적으로 삭제된 경우
204 No Content
- 이미지를 삭제할 수 없는 경우
400 Bad Request