InfoGrab DocsInfoGrab Docs

이슈 API

요약

- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated 이 API를 사용하여 이슈를 관리할 수 있습니다. 담당자, 레이블, 마일스톤, 시간 추적 등 이슈 메타데이터 관리

  - 
  Tier: Free, Premium, Ultimate

- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

이 API를 사용하여 이슈를 관리할 수 있습니다. 다음 작업이 가능합니다:

  • 이슈 생성, 업데이트, 삭제

  • 담당자, 레이블, 마일스톤, 시간 추적 등 이슈 메타데이터 관리

  • 이슈와 머지 리퀘스트 간 교차 참조

  • 프로젝트 및 에픽 간 이슈 이동 및 승격 추적

  • 권한 확인을 통한 접근 및 가시성 제어

사용자가 비공개 프로젝트의 구성원이 아닌 경우 해당 프로젝트에 대한 GET 요청은 404 상태 코드를 반환합니다.

이 API의 응답은 페이지네이션이 적용되며 기본적으로 20개의 결과를 반환합니다.

`references.relative` 속성은 요청된 이슈의 그룹 또는 프로젝트를 기준으로 합니다.

이슈를 해당 프로젝트에서 가져오면 relative 형식은 short 형식과 동일합니다. 그룹 또는 프로젝트를 넘어 요청하는 경우 full 형식과 동일한 것으로 예상됩니다.

모든 이슈 목록 조회#

인증된 사용자가 접근할 수 있는 모든 이슈를 나열합니다. 기본적으로 현재 사용자가 생성한 이슈만 반환됩니다. 모든 이슈를 나열하려면 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 integer No 지정한 사용자 ID에 할당된 이슈를 반환합니다. assignee_username과 상호 배타적입니다. None은 미할당 이슈를 반환하며, Any는 담당자가 있는 이슈를 반환합니다.
assignee_username string array No 지정한 사용자 이름에 할당된 이슈를 반환합니다. assignee_id와 유사하며 상호 배타적입니다. GitLab CE에서는 배열에 단일 값만 포함해야 합니다. 그렇지 않으면 잘못된 파라미터 오류가 반환됩니다. 전달된 모든 사용자에게 할당된 이슈만 반환됩니다.
author_id integer No 지정한 사용자 ID가 생성한 이슈를 반환합니다. author_username과 상호 배타적입니다. scope=all 또는 scope=assigned_to_me와 함께 사용하세요.
author_username string No 지정한 사용자 이름이 생성한 이슈를 반환합니다. author_id와 유사하며 상호 배타적입니다.
confidential boolean No 비밀 또는 공개 이슈를 필터링합니다.
created_after datetime No 지정한 시간 이후에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
created_before datetime No 지정한 시간 이전에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
due_date string No 기한이 없거나 기한이 지났거나 이번 주, 이번 달, 또는 2주 전부터 다음 달 사이인 이슈를 반환합니다. 허용 값: 0 (기한 없음), any, today, tomorrow, overdue, week, month, next_month_and_previous_two_weeks.
epic_id integer No 지정한 에픽 ID에 연관된 이슈를 반환합니다. None은 에픽에 연관되지 않은 이슈를 반환하며, Any는 에픽에 연관된 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
health_status string No 지정한 health_status의 이슈를 반환합니다. (GitLab 15.4에서 도입). GitLab 15.5 이상에서는 None이 상태 미할당 이슈를, Any가 상태 할당 이슈를 반환합니다. Ultimate 전용입니다.
iids[] integer array No 지정한 iid를 가진 이슈만 반환합니다.
in string No 검색 속성의 범위를 수정합니다. title, description, 또는 쉼표로 연결한 문자열. 기본값은 title,description입니다.
issue_type string No 지정한 유형의 이슈로 필터링합니다. issue, incident, test_case, task 중 하나입니다.
iteration_id integer No 지정한 이터레이션 ID에 할당된 이슈를 반환합니다. None은 이터레이션에 속하지 않은 이슈를, Any는 이터레이션에 속한 이슈를 반환합니다. iteration_title과 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
iteration_title string No 지정한 제목의 이터레이션에 할당된 이슈를 반환합니다. iteration_id와 유사하며 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
labels string No 쉼표로 구분된 레이블 이름 목록입니다. 이슈는 모든 레이블을 가져야 반환됩니다. None은 레이블이 없는 모든 이슈를, Any는 레이블이 하나 이상 있는 이슈를 나열합니다. No+Label (사용 중단됨)은 레이블이 없는 모든 이슈를 나열합니다. 미리 정의된 이름은 대소문자를 구분하지 않습니다.
milestone_id string No 지정한 타임박스 값(None, Any, Upcoming, Started)을 가진 마일스톤에 할당된 이슈를 반환합니다. None은 마일스톤이 없는 모든 이슈를, Any는 마일스톤이 할당된 모든 이슈를 나열합니다. Upcoming은 미래 마감 마일스톤에 할당된 이슈를, Started는 진행 중인 마일스톤에 할당된 이슈를 나열합니다. Upcoming과 Started의 논리는 GraphQL API와 다릅니다. milestone과 milestone_id는 상호 배타적입니다.
milestone string No 마일스톤 제목입니다. None은 마일스톤이 없는 모든 이슈를, Any는 마일스톤이 할당된 모든 이슈를 나열합니다. None 또는 Any 사용은 향후 사용 중단될 예정입니다. 대신 milestone_id 속성을 사용하세요. milestone과 milestone_id는 상호 배타적입니다.
my_reaction_emoji string No 인증된 사용자가 지정한 이모지로 반응한 이슈를 반환합니다. None은 반응이 없는 이슈를, Any는 반응이 하나 이상 있는 이슈를 반환합니다.
non_archived boolean No 아카이브되지 않은 프로젝트의 이슈만 반환합니다. false이면 아카이브된 프로젝트와 그렇지 않은 프로젝트 모두의 이슈를 반환합니다. 기본값은 true입니다.
not Hash No 지정한 파라미터와 일치하지 않는 이슈를 반환합니다. 허용 값: assignee_id, assignee_username, author_id, author_username, iids, iteration_id, iteration_title, labels, milestone, milestone_id, weight.
order_by string No created_at, due_date, label_priority, milestone_due, popularity, priority, relative_position, title, updated_at, 또는 weight 필드 순으로 이슈를 정렬합니다. 기본값은 created_at입니다.
scope string No 지정한 범위의 이슈를 반환합니다: created_by_me, assigned_to_me, all. 기본값은 created_by_me입니다.
search string No 제목과 설명에서 이슈를 검색합니다.
sort string No asc 또는 desc 순으로 정렬된 이슈를 반환합니다. 기본값은 desc입니다.
state string No 모든 이슈 또는 열린(opened) 또는 닫힌(closed) 이슈만 반환합니다.
updated_after datetime No 지정한 시간 이후에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
updated_before datetime No 지정한 시간 이전에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
weight integer No 지정한 가중치를 가진 이슈를 반환합니다. None은 가중치가 없는 이슈를, Any는 가중치가 있는 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
with_labels_details boolean No 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,
      "start_date": null,
      "due_date": "2016-07-22",
      "imported":false,
      "imported_from": "none",
      "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":{
         "count":0,
         "completed_count":0
      }
   }
]

GitLab Premium 또는 Ultimate 사용자가 생성한 이슈에는 weight 속성이 포함됩니다:

[
   {
      "state" : "opened",
      "description" : "Ratione dolores corrupti mollitia soluta quia.",
      "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 Premium 또는 Ultimate 사용자가 생성한 이슈에는 iteration 속성이 포함됩니다:

{
   "iteration": {
      "id":90,
      "iid":4,
      "sequence":2,
      "group_id":162,
      "title":null,
      "description":null,
      "state":2,
      "created_at":"2022-03-14T05:21:11.929Z",
      "updated_at":"2022-03-14T05:21:11.929Z",
      "start_date":"2022-03-08",
      "due_date":"2022-03-14",
      "web_url":"https://gitlab.com/groups/my-group/-/iterations/90"
   }
   ...
}

GitLab Ultimate 사용자가 생성한 이슈에는 health_status 속성이 포함됩니다:

[
   {
      "state" : "opened",
      "description" : "Ratione dolores corrupti mollitia soluta quia.",
      "health_status": "on_track",
      ...
   }
]
`assignee` 열은 사용 중단되었습니다. GitLab EE API에 맞게 단일 원소 배열 `assignees`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

모든 그룹 이슈 목록 조회#

지정한 그룹의 모든 이슈를 나열합니다.

그룹이 비공개인 경우 인증을 위한 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

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 integer or string Yes 그룹의 전역 ID 또는 URL 인코딩된 경로입니다.
assignee_id integer No 지정한 사용자 ID에 할당된 이슈를 반환합니다. assignee_username과 상호 배타적입니다. None은 미할당 이슈를 반환하며, Any는 담당자가 있는 이슈를 반환합니다.
assignee_username string array No 지정한 사용자 이름에 할당된 이슈를 반환합니다. assignee_id와 유사하며 상호 배타적입니다. GitLab CE에서는 배열에 단일 값만 포함해야 합니다. 그렇지 않으면 잘못된 파라미터 오류가 반환됩니다. 전달된 모든 사용자에게 할당된 이슈만 반환됩니다.
author_id integer No 지정한 사용자 ID가 생성한 이슈를 반환합니다. author_username과 상호 배타적입니다. scope=all 또는 scope=assigned_to_me와 함께 사용하세요.
author_username string No 지정한 사용자 이름이 생성한 이슈를 반환합니다. author_id와 유사하며 상호 배타적입니다.
confidential boolean No 비밀 또는 공개 이슈를 필터링합니다.
created_after datetime No 지정한 시간 이후에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
created_before datetime No 지정한 시간 이전에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
due_date string No 기한이 없거나 기한이 지났거나 이번 주, 이번 달, 또는 2주 전부터 다음 달 사이인 이슈를 반환합니다. 허용 값: 0 (기한 없음), any, today, tomorrow, overdue, week, month, next_month_and_previous_two_weeks.
epic_id integer No 지정한 에픽 ID에 연관된 이슈를 반환합니다. None은 에픽에 연관되지 않은 이슈를, Any는 에픽에 연관된 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
iids[] integer array No 지정한 iid를 가진 이슈만 반환합니다.
issue_type string No 지정한 유형의 이슈로 필터링합니다. issue, incident, test_case, task 중 하나입니다.
iteration_id integer No 지정한 이터레이션 ID에 할당된 이슈를 반환합니다. None은 이터레이션에 속하지 않은 이슈를, Any는 이터레이션에 속한 이슈를 반환합니다. iteration_title과 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
iteration_title string No 지정한 제목의 이터레이션에 할당된 이슈를 반환합니다. iteration_id와 유사하며 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
labels string No 쉼표로 구분된 레이블 이름 목록입니다. 이슈는 모든 레이블을 가져야 반환됩니다. None은 레이블이 없는 모든 이슈를, Any는 레이블이 하나 이상 있는 이슈를 나열합니다. No+Label (사용 중단됨)은 레이블이 없는 모든 이슈를 나열합니다. 미리 정의된 이름은 대소문자를 구분하지 않습니다.
milestone string No 마일스톤 제목입니다. None은 마일스톤이 없는 모든 이슈를, Any는 마일스톤이 할당된 모든 이슈를 나열합니다.
my_reaction_emoji string No 인증된 사용자가 지정한 이모지로 반응한 이슈를 반환합니다. None은 반응이 없는 이슈를, Any는 반응이 하나 이상 있는 이슈를 반환합니다.
non_archived boolean No 아카이브되지 않은 프로젝트의 이슈를 반환합니다. 기본값은 true입니다.
not Hash No 지정한 파라미터와 일치하지 않는 이슈를 반환합니다. 허용 값: labels, milestone, author_id, author_username, assignee_id, assignee_username, my_reaction_emoji, search, in.
order_by string No created_at, updated_at, priority, due_date, relative_position, label_priority, milestone_due, popularity, weight 필드 순으로 이슈를 정렬합니다. 기본값은 created_at입니다.
scope string No 지정한 범위의 이슈를 반환합니다: created_by_me, assigned_to_me, all. 기본값은 all입니다.
search string No 제목과 설명에서 그룹 이슈를 검색합니다.
sort string No asc 또는 desc 순으로 정렬된 이슈를 반환합니다. 기본값은 desc입니다.
state string No 모든 이슈 또는 열린(opened) 또는 닫힌(closed) 이슈만 반환합니다.
updated_after datetime No 지정한 시간 이후에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
updated_before datetime No 지정한 시간 이전에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
weight integer No 지정한 가중치를 가진 이슈를 반환합니다. None은 가중치가 없는 이슈를, Any는 가중치가 있는 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
with_labels_details boolean No true이면 labels 필드의 각 레이블에 대해 :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,
      "imported": false,
      "imported_from": "none",
      "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": "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 `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": "at_risk",
      ...
   }
]
`assignee` 열은 사용 중단되었습니다. GitLab EE API에 맞게 단일 원소 배열 `assignees`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

모든 프로젝트 이슈 목록 조회#

History

  • Support for keyset pagination introduced in GitLab 18.3.

지정한 프로젝트의 모든 이슈를 나열합니다.

프로젝트가 비공개인 경우 인증을 위한 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
assignee_id integer No 지정한 사용자 ID에 할당된 이슈를 반환합니다. assignee_username과 상호 배타적입니다. None은 미할당 이슈를 반환하며, Any는 담당자가 있는 이슈를 반환합니다.
assignee_username string array No 지정한 사용자 이름에 할당된 이슈를 반환합니다. assignee_id와 유사하며 상호 배타적입니다. GitLab CE에서는 배열에 단일 값만 포함해야 합니다. 그렇지 않으면 잘못된 파라미터 오류가 반환됩니다. 전달된 모든 사용자에게 할당된 이슈만 반환됩니다.
author_id integer No 지정한 사용자 ID가 생성한 이슈를 반환합니다. author_username과 상호 배타적입니다. scope=all 또는 scope=assigned_to_me와 함께 사용하세요.
author_username string No 지정한 사용자 이름이 생성한 이슈를 반환합니다. author_id와 유사하며 상호 배타적입니다.
confidential boolean No 비밀 또는 공개 이슈를 필터링합니다.
created_after datetime No 지정한 시간 이후에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
created_before datetime No 지정한 시간 이전에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
due_date string No 기한이 없거나 기한이 지났거나 이번 주, 이번 달, 또는 2주 전부터 다음 달 사이인 이슈를 반환합니다. 허용 값: 0 (기한 없음), any, today, tomorrow, overdue, week, month, next_month_and_previous_two_weeks.
epic_id integer No 지정한 에픽 ID에 연관된 이슈를 반환합니다. None은 에픽에 연관되지 않은 이슈를, Any는 에픽에 연관된 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
iids[] integer array No 지정한 iid를 가진 이슈만 반환합니다.
issue_type string No 지정한 유형의 이슈로 필터링합니다. issue, incident, test_case, task 중 하나입니다.
iteration_id integer No 지정한 이터레이션 ID에 할당된 이슈를 반환합니다. None은 이터레이션에 속하지 않은 이슈를, Any는 이터레이션에 속한 이슈를 반환합니다. iteration_title과 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
iteration_title string No 지정한 제목의 이터레이션에 할당된 이슈를 반환합니다. iteration_id와 유사하며 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
labels string No 쉼표로 구분된 레이블 이름 목록입니다. 이슈는 모든 레이블을 가져야 반환됩니다. None은 레이블이 없는 모든 이슈를, Any는 레이블이 하나 이상 있는 이슈를 나열합니다. No+Label (사용 중단됨)은 레이블이 없는 모든 이슈를 나열합니다. 미리 정의된 이름은 대소문자를 구분하지 않습니다.
milestone string No 마일스톤 제목입니다. None은 마일스톤이 없는 모든 이슈를, Any는 마일스톤이 할당된 모든 이슈를 나열합니다.
my_reaction_emoji string No 인증된 사용자가 지정한 이모지로 반응한 이슈를 반환합니다. None은 반응이 없는 이슈를, Any는 반응이 하나 이상 있는 이슈를 반환합니다.
not Hash No 지정한 파라미터와 일치하지 않는 이슈를 반환합니다. 허용 값: labels, milestone, author_id, author_username, assignee_id, assignee_username, my_reaction_emoji, search, in.
order_by string No created_at, updated_at, priority, due_date, relative_position, label_priority, milestone_due, popularity, weight 필드 순으로 이슈를 정렬합니다. 기본값은 created_at입니다.
scope string No 지정한 범위의 이슈를 반환합니다: created_by_me, assigned_to_me, all. 기본값은 all입니다.
search string No 제목과 설명에서 프로젝트 이슈를 검색합니다.
sort string No asc 또는 desc 순으로 정렬된 이슈를 반환합니다. 기본값은 desc입니다.
state string No 모든 이슈 또는 열린(opened) 또는 닫힌(closed) 이슈만 반환합니다.
updated_after datetime No 지정한 시간 이후에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
updated_before datetime No 지정한 시간 이전에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
weight integer No 지정한 가중치를 가진 이슈를 반환합니다. None은 가중치가 없는 이슈를, Any는 가중치가 있는 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
with_labels_details boolean No true이면 labels 필드의 각 레이블에 대해 :name, :color, :description, :description_html, :text_color 등 더 많은 세부 정보를 반환합니다. 기본값은 false입니다.
cursor string No 키셋 페이지네이션에 사용되는 파라미터입니다.

이 엔드포인트는 오프셋 기반과 키셋 기반 페이지네이션을 모두 지원합니다. 연속된 페이지 결과를 요청할 때는 키셋 기반 페이지네이션을 사용하세요.

페이지네이션에 대해 자세히 알아보세요.

요청 예시:

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",
      "imported": false,
      "imported_from": "none",
      "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 `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": "at_risk",
      ...
   }
]
`assignee` 열은 사용 중단되었습니다. GitLab EE API에 맞게 단일 원소 배열 `assignees`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

이슈 조회#

관리자 전용입니다.

지정한 이슈를 조회합니다.

권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /issues/:id

지원 속성:

속성 유형 필수 여부 설명
id integer Yes 이슈의 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"
    }
  ],
  "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,
  "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,
  "imported": false,
  "imported_from": "none",
  "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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며, API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

프로젝트 이슈 조회#

프로젝트에서 지정한 이슈를 조회합니다.

프로젝트가 비공개이거나 이슈가 비밀인 경우 인증을 위한 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer 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,
   "imported": false,
   "imported_from": "none",
   "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 `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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

이슈 생성#

지정한 프로젝트에 이슈를 생성합니다.

POST /projects/:id/issues

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
assignee_id integer No 이슈를 할당할 사용자의 ID입니다. GitLab Free에서만 나타납니다.
assignee_ids integer array No 이슈를 할당할 사용자들의 ID입니다. Premium 및 Ultimate 전용입니다.
confidential boolean No 이슈를 비밀로 설정합니다. 기본값은 false입니다.
created_at string No 이슈가 생성된 시간입니다. ISO 8601 형식의 날짜/시간 문자열, 예: 2016-03-11T03:45:40Z. 관리자 또는 프로젝트/그룹 소유자 권한이 필요합니다.
description string No 이슈의 설명입니다. 최대 1,048,576자로 제한됩니다.
discussion_to_resolve string No 해결할 토론의 ID입니다. 이슈를 기본 설명으로 채우고 토론을 해결됨으로 표시합니다. merge_request_to_resolve_discussions_of와 함께 사용하세요.
due_date string No 기한입니다. YYYY-MM-DD 형식의 날짜/시간 문자열, 예: 2016-03-11.
epic_id integer No 이슈를 추가할 에픽의 ID입니다. 유효 값은 0 이상입니다. Premium 및 Ultimate 전용입니다.
epic_iid integer No 이슈를 추가할 에픽의 IID입니다. 유효 값은 0 이상입니다. (사용 중단됨, API 버전 5에서 제거 예정). Premium 및 Ultimate 전용입니다.
iid integer or string No 프로젝트 이슈의 내부 ID입니다(관리자 또는 프로젝트 소유자 권한 필요).
issue_type string No 이슈 유형입니다. issue, incident, test_case, task 중 하나입니다. 기본값은 issue입니다.
labels string No 새 이슈에 할당할 쉼표로 구분된 레이블 이름입니다. 레이블이 없으면 새 프로젝트 레이블을 만들어 이슈에 할당합니다.
merge_request_to_resolve_discussions_of integer No 모든 이슈를 해결할 머지 리퀘스트의 IID입니다. 이슈를 기본 설명으로 채우고 모든 토론을 해결됨으로 표시합니다. 설명이나 제목을 전달하면 기본값보다 우선합니다.
milestone_id integer No 이슈에 할당할 마일스톤의 전역 ID입니다. 마일스톤에 연관된 milestone_id를 찾으려면 마일스톤이 할당된 이슈를 조회하고 API로 이슈 세부 정보를 가져오세요.
title string Yes 이슈의 제목입니다.
weight integer No 이슈의 가중치입니다. 유효 값은 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
   }
}

대상 프로젝트에서 이슈비활성화된 경우 다음 메시지와 함께 403 응답을 받습니다:

{
   "message": "403 Forbidden"
}

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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

속도 제한#

남용을 방지하기 위해 사용자당 분당 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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
add_labels string No 이슈에 추가할 쉼표로 구분된 레이블 이름입니다. 레이블이 없으면 새 프로젝트 레이블을 만들어 이슈에 할당합니다.
assignee_ids integer array No 이슈를 할당할 사용자들의 ID입니다. 0으로 설정하거나 빈 값을 제공하면 모든 담당자 할당이 해제됩니다.
confidential boolean No 이슈를 비밀로 업데이트합니다.
description string No 이슈의 설명입니다. 최대 1,048,576자로 제한됩니다.
discussion_locked boolean No 이슈의 토론이 잠겼는지 여부를 나타내는 플래그입니다. 토론이 잠기면 프로젝트 멤버만 댓글을 추가하거나 편집할 수 있습니다.
due_date string No 기한입니다. YYYY-MM-DD 형식의 날짜/시간 문자열, 예: 2016-03-11.
epic_id integer No 이슈를 추가할 에픽의 ID입니다. 유효 값은 0 이상입니다. Premium 및 Ultimate 전용입니다.
epic_iid integer No 이슈를 추가할 에픽의 IID입니다. 유효 값은 0 이상입니다. (사용 중단됨, API 버전 5에서 제거 예정). Premium 및 Ultimate 전용입니다.
issue_type string No 이슈 유형을 업데이트합니다. issue, incident, test_case 중 하나입니다.
labels string No 이슈의 쉼표로 구분된 레이블 이름입니다. 빈 문자열로 설정하면 모든 레이블 할당이 해제됩니다. 레이블이 없으면 새 프로젝트 레이블을 만들어 이슈에 할당합니다.
milestone_id integer No 이슈에 할당할 마일스톤의 전역 ID입니다. 0으로 설정하거나 빈 값을 제공하면 마일스톤 할당이 해제됩니다.
remove_labels string No 이슈에서 제거할 쉼표로 구분된 레이블 이름입니다.
state_event string No 이슈의 상태 이벤트입니다. 이슈를 닫으려면 close를, 다시 열려면 reopen을 사용하세요.
title string No 이슈의 제목입니다.
updated_at string No 이슈가 업데이트된 시간입니다. ISO 8601 형식의 날짜/시간 문자열, 예: 2016-03-11T03:45:40Z (관리자 또는 프로젝트 소유자 권한 필요). 빈 문자열이나 null 값은 허용되지 않습니다.
weight integer No 이슈의 가중치입니다. 유효 값은 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, //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",
      ...
   }
]
사용 중단:
  • epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

  • assignee 열은 사용 중단되었습니다. GitLab EE API에 맞게 단일 원소 배열 assignees로 표시됩니다.

이슈 삭제#

History

  • Users can delete the issues they authored introduced in GitLab 18.10.

Planner 또는 Owner 역할을 가진 사용자는 모든 이슈를 삭제할 수 있습니다. 다른 프로젝트 멤버는 자신이 작성한 이슈를 삭제할 수 있습니다.

프로젝트에서 지정한 이슈를 삭제합니다.

DELETE /projects/:id/issues/:issue_iid

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
move_after_id integer No 이 이슈 뒤에 배치해야 할 프로젝트 이슈의 전역 ID입니다.
move_before_id integer No 이 이슈 앞에 배치해야 할 프로젝트 이슈의 전역 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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
to_project_id integer Yes 새 프로젝트의 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,
  "imported": false,
  "imported_from": "none",
  "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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

이슈 복제#

지정한 이슈를 다른 프로젝트로 복제합니다. 대상 프로젝트에 레이블이나 마일스톤 등 동등한 기준이 있는 경우 최대한 많은 데이터를 복사합니다.

권한이 부족한 경우 상태 코드 400과 함께 오류 메시지가 반환됩니다.

POST /projects/:id/issues/:issue_iid/clone

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
to_project_id integer Yes 새 프로젝트의 ID입니다.
with_notes boolean No 노트와 함께 이슈를 복제합니다. 기본값은 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,
  "imported":false,
  "imported_from": "none",
  "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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

이슈 구독 취소#

인증된 사용자를 지정한 이슈에서 구독 취소하여 알림 수신을 중단합니다. 이슈에 구독되지 않은 경우 상태 코드 304가 반환됩니다.

POST /projects/:id/issues/:issue_iid/unsubscribe

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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_to 빠른 작업을 사용하는 댓글을 추가하여 지정한 이슈를 에픽으로 승격합니다.

자세한 내용은 이슈를 에픽으로 승격을 참고하세요.

POST /projects/:id/issues/:issue_iid/notes

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
body String Yes 노트의 내용입니다. 새 줄의 시작 부분에 /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 Yes 사람이 읽을 수 있는 형식의 기간입니다. 예: 3h30m.
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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 or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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 Yes 사람이 읽을 수 있는 형식의 기간입니다. 예: 3h30m.
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
summary string No 시간을 사용한 방법에 대한 요약입니다.

요청 예시:

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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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
}

이슈 시간 추적 통계 조회#

지정한 이슈의 시간 추적 통계를 사람이 읽기 쉬운 형식(예: 1h30m)과 초 단위로 조회합니다.

프로젝트가 비공개이거나 이슈가 기밀인 경우 인증 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid/time_stats

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 ID.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/issues/93/time_stats"

응답 예시:

{
  "human_time_estimate": "2h",
  "human_total_time_spent": "1h",
  "time_estimate": 7200,
  "total_time_spent": 3600
}

머지 리퀘스트#

다음 요청들은 이슈와 머지 리퀘스트 간의 관계에 관한 것입니다.

이슈와 관련된 모든 머지 리퀘스트 목록 조회#

지정한 이슈와 관련된 모든 머지 리퀘스트를 조회합니다.

프로젝트가 비공개이거나 이슈가 기밀인 경우 인증 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid/related_merge_requests

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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.",
    "description": "Ut consequatur ipsa aspernatur quisquam voluptatum fugit. Qui harum corporis quo fuga ut incidunt veritatis. Autem necessitatibus et harum occaecati nihil ea.\r\n\r\ntwitter/flight#8",
    "state": "opened",
    "created_at": "2018-09-18T14:36:15.510Z",
    "updated_at": "2018-09-19T07:45:13.089Z",
    "closed_by": null,
    "closed_at": null,
    "target_branch": "v2.x",
    "source_branch": "so_long_jquery",
    "user_notes_count": 9,
    "upvotes": 0,
    "downvotes": 0,
    "author": {
      "id": 14,
      "name": "Verna Hills",
      "username": "lawanda_reinger",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/de68a91aeab1cff563795fb98a0c2cc0?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/lawanda_reinger"
    },
    "assignee": {
      "id": 19,
      "name": "Jody Baumbach",
      "username": "felipa.kuvalis",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/6541fc75fc4e87e203529bd275fafd07?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/felipa.kuvalis"
    },
    "source_project_id": 1,
    "target_project_id": 1,
    "labels": [],
    "draft": false,
    "work_in_progress": false,
    "milestone": {
      "id": 27,
      "iid": 2,
      "project_id": 1,
      "title": "v1.0",
      "description": "Et tenetur voluptatem minima doloribus vero dignissimos vitae.",
      "state": "active",
      "created_at": "2018-09-18T14:35:44.353Z",
      "updated_at": "2018-09-18T14:35:44.353Z",
      "due_date": null,
      "start_date": null,
      "web_url": "https://gitlab.example.com/twitter/flight/milestones/2"
    },
    "merge_when_pipeline_succeeds": false,
    "merge_status": "cannot_be_merged",
    "sha": "3b7b528e9353295c1c125dad281ac5b5deae5f12",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "discussion_locked": null,
    "should_remove_source_branch": null,
    "force_remove_source_branch": false,
    "reference": "!11",
    "web_url": "https://gitlab.example.com/twitter/flight/merge_requests/4",
    "references": {
      "short": "!4",
      "relative": "!4",
      "full": "twitter/flight!4"
    },
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    },
    "squash": false,
    "task_completion_status": {
      "count": 0,
      "completed_count": 0
    },
    "changes_count": "10",
    "latest_build_started_at": "2018-12-05T01:16:41.723Z",
    "latest_build_finished_at": "2018-12-05T02:35:54.046Z",
    "first_deployed_to_production_at": null,
    "pipeline": {
      "id": 38980952,
      "sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
      "ref": "test-branch",
      "status": "success",
      "web_url": "https://gitlab.com/gitlab-org/gitlab/pipelines/38980952"
    },
    "head_pipeline": {
      "id": 38980952,
      "sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
      "ref": "test-branch",
      "status": "success",
      "web_url": "https://gitlab.example.com/twitter/flight/pipelines/38980952",
      "before_sha": "3c738a37eb23cf4c0ed0d45d6ddde8aad4a8da51",
      "tag": false,
      "yaml_errors": null,
      "user": {
        "id": 19,
        "name": "Jody Baumbach",
        "username": "felipa.kuvalis",
        "state": "active",
        "avatar_url": "https://www.gravatar.com/avatar/6541fc75fc4e87e203529bd275fafd07?s=80&d=identicon",
        "web_url": "https://gitlab.example.com/felipa.kuvalis"
      },
      "created_at": "2018-12-05T01:16:13.342Z",
      "updated_at": "2018-12-05T02:35:54.086Z",
      "started_at": "2018-12-05T01:16:41.723Z",
      "finished_at": "2018-12-05T02:35:54.046Z",
      "committed_at": null,
      "duration": 4436,
      "coverage": "46.68",
      "detailed_status": {
        "icon": "status_warning",
        "text": "passed",
        "label": "passed with warnings",
        "group": "success-with-warnings",
        "tooltip": "passed",
        "has_details": true,
        "details_path": "/twitter/flight/pipelines/38",
        "illustration": null,
        "favicon": "https://gitlab.example.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png"
      },
      "archived": false
    },
    "diff_refs": {
      "base_sha": "d052d768f0126e8cddf80afd8b1eb07f406a3fcb",
      "head_sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
      "start_sha": "d052d768f0126e8cddf80afd8b1eb07f406a3fcb"
    },
    "merge_error": null,
    "user": {
      "can_merge": true
    }
  }
]

이슈를 닫는 모든 머지 리퀘스트 목록 조회#

머지 시 지정한 이슈를 닫는 모든 머지 리퀘스트를 조회합니다.

프로젝트가 비공개이거나 이슈가 기밀인 경우 인증 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid/closed_by

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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,
    "downvotes": 0,
    "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"
    },
    "assignee": null,
    "source_project_id": 1,
    "target_project_id": 1,
    "closed_at": null,
    "closed_by": null,
    "labels": [],
    "draft": false,
    "work_in_progress": false,
    "milestone": null,
    "merge_when_pipeline_succeeds": false,
    "merge_status": "unchecked",
    "sha": "5a62481d563af92b8e32d735f2fa63b94e806835",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "user_notes_count": 1,
    "should_remove_source_branch": null,
    "force_remove_source_branch": false,
    "web_url": "https://gitlab.example.com/gitlab-org/gitlab-test/merge_requests/6432",
    "reference": "!6432",
    "references": {
      "short": "!6432",
      "relative": "!6432",
      "full": "gitlab-org/gitlab-test!6432"
    },
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    }
  }
]

이슈 참여자 전체 목록 조회#

지정한 이슈에 참여 중인 모든 사용자를 조회합니다.

프로젝트가 비공개이거나 이슈가 기밀인 경우 인증 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid/participants

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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",
    "avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/user1"
  },
  {
    "id": 5,
    "name": "John Doe5",
    "username": "user5",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/4aea8cf834ed91844a2da4ff7ae6b491?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/user5"
  }
]

이슈 댓글#

노트 API를 사용하여 댓글과 상호작용합니다.

이슈 사용자 에이전트 세부정보 조회#

관리자만 사용할 수 있습니다.

지정한 이슈를 생성한 사용자의 사용자 에이전트 문자열과 IP 주소를 조회합니다. 스팸 추적에 사용됩니다.

GET /projects/:id/issues/:issue_iid/user_agent_detail

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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를 사용하세요.

인시던트#

다음 요청들은 인시던트에만 사용할 수 있습니다.

인시던트에 메트릭 이미지 업로드#

인시던트에만 사용할 수 있습니다.

지정한 인시던트의 Metrics 탭에 표시할 메트릭 차트 스크린샷을 업로드합니다. 이미지를 업로드할 때 텍스트 또는 원본 그래프 링크를 이미지와 연결할 수 있습니다. URL을 추가하면 업로드된 이미지 위의 하이퍼링크를 선택하여 원본 그래프에 접근할 수 있습니다.

POST /projects/:id/issues/:issue_iid/metric_images

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 ID.
file file Yes 업로드할 이미지 파일.
url string No 메트릭 정보를 더 볼 수 있는 URL.
url_text string No 이미지 또는 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"
}

인시던트의 모든 메트릭 이미지 목록 조회#

인시던트에만 사용할 수 있습니다.

지정한 인시던트의 Metrics 탭에 표시된 메트릭 차트 스크린샷을 모두 조회합니다.

GET /projects/:id/issues/:issue_iid/metric_images

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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"
    }
]

인시던트의 메트릭 이미지 업데이트#

인시던트에만 사용할 수 있습니다.

인시던트의 Metrics 탭에 표시된 지정한 메트릭 이미지의 속성을 업데이트합니다.

PUT /projects/:id/issues/:issue_iid/metric_images/:image_id

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 ID.
image_id integer Yes 이미지의 ID.
url string No 메트릭 정보를 더 볼 수 있는 URL.
url_text string No 이미지 또는 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"
}

인시던트에서 메트릭 이미지 삭제#

인시던트에만 사용할 수 있습니다.

인시던트의 Metrics 탭에서 지정한 메트릭 이미지를 삭제합니다.

DELETE /projects/:id/issues/:issue_iid/metric_images/:image_id

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 ID.
image_id integer Yes 이미지의 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: 이미지를 삭제할 수 없는 경우.

이슈 API

GitLab v19.1
Tier: Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated 이 API를 사용하여 이슈를 관리할 수 있습니다. 담당자, 레이블, 마일스톤, 시간 추적 등 이슈 메타데이터 관리

  - 
  Tier: Free, Premium, Ultimate

- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

이 API를 사용하여 이슈를 관리할 수 있습니다. 다음 작업이 가능합니다:

  • 이슈 생성, 업데이트, 삭제

  • 담당자, 레이블, 마일스톤, 시간 추적 등 이슈 메타데이터 관리

  • 이슈와 머지 리퀘스트 간 교차 참조

  • 프로젝트 및 에픽 간 이슈 이동 및 승격 추적

  • 권한 확인을 통한 접근 및 가시성 제어

사용자가 비공개 프로젝트의 구성원이 아닌 경우 해당 프로젝트에 대한 GET 요청은 404 상태 코드를 반환합니다.

이 API의 응답은 페이지네이션이 적용되며 기본적으로 20개의 결과를 반환합니다.

`references.relative` 속성은 요청된 이슈의 그룹 또는 프로젝트를 기준으로 합니다.

이슈를 해당 프로젝트에서 가져오면 relative 형식은 short 형식과 동일합니다. 그룹 또는 프로젝트를 넘어 요청하는 경우 full 형식과 동일한 것으로 예상됩니다.

모든 이슈 목록 조회#

인증된 사용자가 접근할 수 있는 모든 이슈를 나열합니다. 기본적으로 현재 사용자가 생성한 이슈만 반환됩니다. 모든 이슈를 나열하려면 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 integer No 지정한 사용자 ID에 할당된 이슈를 반환합니다. assignee_username과 상호 배타적입니다. None은 미할당 이슈를 반환하며, Any는 담당자가 있는 이슈를 반환합니다.
assignee_username string array No 지정한 사용자 이름에 할당된 이슈를 반환합니다. assignee_id와 유사하며 상호 배타적입니다. GitLab CE에서는 배열에 단일 값만 포함해야 합니다. 그렇지 않으면 잘못된 파라미터 오류가 반환됩니다. 전달된 모든 사용자에게 할당된 이슈만 반환됩니다.
author_id integer No 지정한 사용자 ID가 생성한 이슈를 반환합니다. author_username과 상호 배타적입니다. scope=all 또는 scope=assigned_to_me와 함께 사용하세요.
author_username string No 지정한 사용자 이름이 생성한 이슈를 반환합니다. author_id와 유사하며 상호 배타적입니다.
confidential boolean No 비밀 또는 공개 이슈를 필터링합니다.
created_after datetime No 지정한 시간 이후에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
created_before datetime No 지정한 시간 이전에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
due_date string No 기한이 없거나 기한이 지났거나 이번 주, 이번 달, 또는 2주 전부터 다음 달 사이인 이슈를 반환합니다. 허용 값: 0 (기한 없음), any, today, tomorrow, overdue, week, month, next_month_and_previous_two_weeks.
epic_id integer No 지정한 에픽 ID에 연관된 이슈를 반환합니다. None은 에픽에 연관되지 않은 이슈를 반환하며, Any는 에픽에 연관된 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
health_status string No 지정한 health_status의 이슈를 반환합니다. (GitLab 15.4에서 도입). GitLab 15.5 이상에서는 None이 상태 미할당 이슈를, Any가 상태 할당 이슈를 반환합니다. Ultimate 전용입니다.
iids[] integer array No 지정한 iid를 가진 이슈만 반환합니다.
in string No 검색 속성의 범위를 수정합니다. title, description, 또는 쉼표로 연결한 문자열. 기본값은 title,description입니다.
issue_type string No 지정한 유형의 이슈로 필터링합니다. issue, incident, test_case, task 중 하나입니다.
iteration_id integer No 지정한 이터레이션 ID에 할당된 이슈를 반환합니다. None은 이터레이션에 속하지 않은 이슈를, Any는 이터레이션에 속한 이슈를 반환합니다. iteration_title과 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
iteration_title string No 지정한 제목의 이터레이션에 할당된 이슈를 반환합니다. iteration_id와 유사하며 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
labels string No 쉼표로 구분된 레이블 이름 목록입니다. 이슈는 모든 레이블을 가져야 반환됩니다. None은 레이블이 없는 모든 이슈를, Any는 레이블이 하나 이상 있는 이슈를 나열합니다. No+Label (사용 중단됨)은 레이블이 없는 모든 이슈를 나열합니다. 미리 정의된 이름은 대소문자를 구분하지 않습니다.
milestone_id string No 지정한 타임박스 값(None, Any, Upcoming, Started)을 가진 마일스톤에 할당된 이슈를 반환합니다. None은 마일스톤이 없는 모든 이슈를, Any는 마일스톤이 할당된 모든 이슈를 나열합니다. Upcoming은 미래 마감 마일스톤에 할당된 이슈를, Started는 진행 중인 마일스톤에 할당된 이슈를 나열합니다. Upcoming과 Started의 논리는 GraphQL API와 다릅니다. milestone과 milestone_id는 상호 배타적입니다.
milestone string No 마일스톤 제목입니다. None은 마일스톤이 없는 모든 이슈를, Any는 마일스톤이 할당된 모든 이슈를 나열합니다. None 또는 Any 사용은 향후 사용 중단될 예정입니다. 대신 milestone_id 속성을 사용하세요. milestone과 milestone_id는 상호 배타적입니다.
my_reaction_emoji string No 인증된 사용자가 지정한 이모지로 반응한 이슈를 반환합니다. None은 반응이 없는 이슈를, Any는 반응이 하나 이상 있는 이슈를 반환합니다.
non_archived boolean No 아카이브되지 않은 프로젝트의 이슈만 반환합니다. false이면 아카이브된 프로젝트와 그렇지 않은 프로젝트 모두의 이슈를 반환합니다. 기본값은 true입니다.
not Hash No 지정한 파라미터와 일치하지 않는 이슈를 반환합니다. 허용 값: assignee_id, assignee_username, author_id, author_username, iids, iteration_id, iteration_title, labels, milestone, milestone_id, weight.
order_by string No created_at, due_date, label_priority, milestone_due, popularity, priority, relative_position, title, updated_at, 또는 weight 필드 순으로 이슈를 정렬합니다. 기본값은 created_at입니다.
scope string No 지정한 범위의 이슈를 반환합니다: created_by_me, assigned_to_me, all. 기본값은 created_by_me입니다.
search string No 제목과 설명에서 이슈를 검색합니다.
sort string No asc 또는 desc 순으로 정렬된 이슈를 반환합니다. 기본값은 desc입니다.
state string No 모든 이슈 또는 열린(opened) 또는 닫힌(closed) 이슈만 반환합니다.
updated_after datetime No 지정한 시간 이후에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
updated_before datetime No 지정한 시간 이전에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
weight integer No 지정한 가중치를 가진 이슈를 반환합니다. None은 가중치가 없는 이슈를, Any는 가중치가 있는 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
with_labels_details boolean No 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,
      "start_date": null,
      "due_date": "2016-07-22",
      "imported":false,
      "imported_from": "none",
      "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":{
         "count":0,
         "completed_count":0
      }
   }
]

GitLab Premium 또는 Ultimate 사용자가 생성한 이슈에는 weight 속성이 포함됩니다:

[
   {
      "state" : "opened",
      "description" : "Ratione dolores corrupti mollitia soluta quia.",
      "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 Premium 또는 Ultimate 사용자가 생성한 이슈에는 iteration 속성이 포함됩니다:

{
   "iteration": {
      "id":90,
      "iid":4,
      "sequence":2,
      "group_id":162,
      "title":null,
      "description":null,
      "state":2,
      "created_at":"2022-03-14T05:21:11.929Z",
      "updated_at":"2022-03-14T05:21:11.929Z",
      "start_date":"2022-03-08",
      "due_date":"2022-03-14",
      "web_url":"https://gitlab.com/groups/my-group/-/iterations/90"
   }
   ...
}

GitLab Ultimate 사용자가 생성한 이슈에는 health_status 속성이 포함됩니다:

[
   {
      "state" : "opened",
      "description" : "Ratione dolores corrupti mollitia soluta quia.",
      "health_status": "on_track",
      ...
   }
]
`assignee` 열은 사용 중단되었습니다. GitLab EE API에 맞게 단일 원소 배열 `assignees`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

모든 그룹 이슈 목록 조회#

지정한 그룹의 모든 이슈를 나열합니다.

그룹이 비공개인 경우 인증을 위한 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

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 integer or string Yes 그룹의 전역 ID 또는 URL 인코딩된 경로입니다.
assignee_id integer No 지정한 사용자 ID에 할당된 이슈를 반환합니다. assignee_username과 상호 배타적입니다. None은 미할당 이슈를 반환하며, Any는 담당자가 있는 이슈를 반환합니다.
assignee_username string array No 지정한 사용자 이름에 할당된 이슈를 반환합니다. assignee_id와 유사하며 상호 배타적입니다. GitLab CE에서는 배열에 단일 값만 포함해야 합니다. 그렇지 않으면 잘못된 파라미터 오류가 반환됩니다. 전달된 모든 사용자에게 할당된 이슈만 반환됩니다.
author_id integer No 지정한 사용자 ID가 생성한 이슈를 반환합니다. author_username과 상호 배타적입니다. scope=all 또는 scope=assigned_to_me와 함께 사용하세요.
author_username string No 지정한 사용자 이름이 생성한 이슈를 반환합니다. author_id와 유사하며 상호 배타적입니다.
confidential boolean No 비밀 또는 공개 이슈를 필터링합니다.
created_after datetime No 지정한 시간 이후에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
created_before datetime No 지정한 시간 이전에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
due_date string No 기한이 없거나 기한이 지났거나 이번 주, 이번 달, 또는 2주 전부터 다음 달 사이인 이슈를 반환합니다. 허용 값: 0 (기한 없음), any, today, tomorrow, overdue, week, month, next_month_and_previous_two_weeks.
epic_id integer No 지정한 에픽 ID에 연관된 이슈를 반환합니다. None은 에픽에 연관되지 않은 이슈를, Any는 에픽에 연관된 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
iids[] integer array No 지정한 iid를 가진 이슈만 반환합니다.
issue_type string No 지정한 유형의 이슈로 필터링합니다. issue, incident, test_case, task 중 하나입니다.
iteration_id integer No 지정한 이터레이션 ID에 할당된 이슈를 반환합니다. None은 이터레이션에 속하지 않은 이슈를, Any는 이터레이션에 속한 이슈를 반환합니다. iteration_title과 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
iteration_title string No 지정한 제목의 이터레이션에 할당된 이슈를 반환합니다. iteration_id와 유사하며 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
labels string No 쉼표로 구분된 레이블 이름 목록입니다. 이슈는 모든 레이블을 가져야 반환됩니다. None은 레이블이 없는 모든 이슈를, Any는 레이블이 하나 이상 있는 이슈를 나열합니다. No+Label (사용 중단됨)은 레이블이 없는 모든 이슈를 나열합니다. 미리 정의된 이름은 대소문자를 구분하지 않습니다.
milestone string No 마일스톤 제목입니다. None은 마일스톤이 없는 모든 이슈를, Any는 마일스톤이 할당된 모든 이슈를 나열합니다.
my_reaction_emoji string No 인증된 사용자가 지정한 이모지로 반응한 이슈를 반환합니다. None은 반응이 없는 이슈를, Any는 반응이 하나 이상 있는 이슈를 반환합니다.
non_archived boolean No 아카이브되지 않은 프로젝트의 이슈를 반환합니다. 기본값은 true입니다.
not Hash No 지정한 파라미터와 일치하지 않는 이슈를 반환합니다. 허용 값: labels, milestone, author_id, author_username, assignee_id, assignee_username, my_reaction_emoji, search, in.
order_by string No created_at, updated_at, priority, due_date, relative_position, label_priority, milestone_due, popularity, weight 필드 순으로 이슈를 정렬합니다. 기본값은 created_at입니다.
scope string No 지정한 범위의 이슈를 반환합니다: created_by_me, assigned_to_me, all. 기본값은 all입니다.
search string No 제목과 설명에서 그룹 이슈를 검색합니다.
sort string No asc 또는 desc 순으로 정렬된 이슈를 반환합니다. 기본값은 desc입니다.
state string No 모든 이슈 또는 열린(opened) 또는 닫힌(closed) 이슈만 반환합니다.
updated_after datetime No 지정한 시간 이후에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
updated_before datetime No 지정한 시간 이전에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
weight integer No 지정한 가중치를 가진 이슈를 반환합니다. None은 가중치가 없는 이슈를, Any는 가중치가 있는 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
with_labels_details boolean No true이면 labels 필드의 각 레이블에 대해 :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,
      "imported": false,
      "imported_from": "none",
      "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": "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 `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": "at_risk",
      ...
   }
]
`assignee` 열은 사용 중단되었습니다. GitLab EE API에 맞게 단일 원소 배열 `assignees`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

모든 프로젝트 이슈 목록 조회#

History

  • Support for keyset pagination introduced in GitLab 18.3.

지정한 프로젝트의 모든 이슈를 나열합니다.

프로젝트가 비공개인 경우 인증을 위한 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
assignee_id integer No 지정한 사용자 ID에 할당된 이슈를 반환합니다. assignee_username과 상호 배타적입니다. None은 미할당 이슈를 반환하며, Any는 담당자가 있는 이슈를 반환합니다.
assignee_username string array No 지정한 사용자 이름에 할당된 이슈를 반환합니다. assignee_id와 유사하며 상호 배타적입니다. GitLab CE에서는 배열에 단일 값만 포함해야 합니다. 그렇지 않으면 잘못된 파라미터 오류가 반환됩니다. 전달된 모든 사용자에게 할당된 이슈만 반환됩니다.
author_id integer No 지정한 사용자 ID가 생성한 이슈를 반환합니다. author_username과 상호 배타적입니다. scope=all 또는 scope=assigned_to_me와 함께 사용하세요.
author_username string No 지정한 사용자 이름이 생성한 이슈를 반환합니다. author_id와 유사하며 상호 배타적입니다.
confidential boolean No 비밀 또는 공개 이슈를 필터링합니다.
created_after datetime No 지정한 시간 이후에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
created_before datetime No 지정한 시간 이전에 생성된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
due_date string No 기한이 없거나 기한이 지났거나 이번 주, 이번 달, 또는 2주 전부터 다음 달 사이인 이슈를 반환합니다. 허용 값: 0 (기한 없음), any, today, tomorrow, overdue, week, month, next_month_and_previous_two_weeks.
epic_id integer No 지정한 에픽 ID에 연관된 이슈를 반환합니다. None은 에픽에 연관되지 않은 이슈를, Any는 에픽에 연관된 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
iids[] integer array No 지정한 iid를 가진 이슈만 반환합니다.
issue_type string No 지정한 유형의 이슈로 필터링합니다. issue, incident, test_case, task 중 하나입니다.
iteration_id integer No 지정한 이터레이션 ID에 할당된 이슈를 반환합니다. None은 이터레이션에 속하지 않은 이슈를, Any는 이터레이션에 속한 이슈를 반환합니다. iteration_title과 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
iteration_title string No 지정한 제목의 이터레이션에 할당된 이슈를 반환합니다. iteration_id와 유사하며 상호 배타적입니다. Premium 및 Ultimate 전용입니다.
labels string No 쉼표로 구분된 레이블 이름 목록입니다. 이슈는 모든 레이블을 가져야 반환됩니다. None은 레이블이 없는 모든 이슈를, Any는 레이블이 하나 이상 있는 이슈를 나열합니다. No+Label (사용 중단됨)은 레이블이 없는 모든 이슈를 나열합니다. 미리 정의된 이름은 대소문자를 구분하지 않습니다.
milestone string No 마일스톤 제목입니다. None은 마일스톤이 없는 모든 이슈를, Any는 마일스톤이 할당된 모든 이슈를 나열합니다.
my_reaction_emoji string No 인증된 사용자가 지정한 이모지로 반응한 이슈를 반환합니다. None은 반응이 없는 이슈를, Any는 반응이 하나 이상 있는 이슈를 반환합니다.
not Hash No 지정한 파라미터와 일치하지 않는 이슈를 반환합니다. 허용 값: labels, milestone, author_id, author_username, assignee_id, assignee_username, my_reaction_emoji, search, in.
order_by string No created_at, updated_at, priority, due_date, relative_position, label_priority, milestone_due, popularity, weight 필드 순으로 이슈를 정렬합니다. 기본값은 created_at입니다.
scope string No 지정한 범위의 이슈를 반환합니다: created_by_me, assigned_to_me, all. 기본값은 all입니다.
search string No 제목과 설명에서 프로젝트 이슈를 검색합니다.
sort string No asc 또는 desc 순으로 정렬된 이슈를 반환합니다. 기본값은 desc입니다.
state string No 모든 이슈 또는 열린(opened) 또는 닫힌(closed) 이슈만 반환합니다.
updated_after datetime No 지정한 시간 이후에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
updated_before datetime No 지정한 시간 이전에 업데이트된 이슈를 반환합니다. ISO 8601 형식 (2019-03-15T08:00:00Z)이어야 합니다.
weight integer No 지정한 가중치를 가진 이슈를 반환합니다. None은 가중치가 없는 이슈를, Any는 가중치가 있는 이슈를 반환합니다. Premium 및 Ultimate 전용입니다.
with_labels_details boolean No true이면 labels 필드의 각 레이블에 대해 :name, :color, :description, :description_html, :text_color 등 더 많은 세부 정보를 반환합니다. 기본값은 false입니다.
cursor string No 키셋 페이지네이션에 사용되는 파라미터입니다.

이 엔드포인트는 오프셋 기반과 키셋 기반 페이지네이션을 모두 지원합니다. 연속된 페이지 결과를 요청할 때는 키셋 기반 페이지네이션을 사용하세요.

페이지네이션에 대해 자세히 알아보세요.

요청 예시:

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",
      "imported": false,
      "imported_from": "none",
      "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 `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": "at_risk",
      ...
   }
]
`assignee` 열은 사용 중단되었습니다. GitLab EE API에 맞게 단일 원소 배열 `assignees`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

이슈 조회#

관리자 전용입니다.

지정한 이슈를 조회합니다.

권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /issues/:id

지원 속성:

속성 유형 필수 여부 설명
id integer Yes 이슈의 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"
    }
  ],
  "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,
  "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,
  "imported": false,
  "imported_from": "none",
  "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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며, API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

프로젝트 이슈 조회#

프로젝트에서 지정한 이슈를 조회합니다.

프로젝트가 비공개이거나 이슈가 비밀인 경우 인증을 위한 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer 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,
   "imported": false,
   "imported_from": "none",
   "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 `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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

이슈 생성#

지정한 프로젝트에 이슈를 생성합니다.

POST /projects/:id/issues

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
assignee_id integer No 이슈를 할당할 사용자의 ID입니다. GitLab Free에서만 나타납니다.
assignee_ids integer array No 이슈를 할당할 사용자들의 ID입니다. Premium 및 Ultimate 전용입니다.
confidential boolean No 이슈를 비밀로 설정합니다. 기본값은 false입니다.
created_at string No 이슈가 생성된 시간입니다. ISO 8601 형식의 날짜/시간 문자열, 예: 2016-03-11T03:45:40Z. 관리자 또는 프로젝트/그룹 소유자 권한이 필요합니다.
description string No 이슈의 설명입니다. 최대 1,048,576자로 제한됩니다.
discussion_to_resolve string No 해결할 토론의 ID입니다. 이슈를 기본 설명으로 채우고 토론을 해결됨으로 표시합니다. merge_request_to_resolve_discussions_of와 함께 사용하세요.
due_date string No 기한입니다. YYYY-MM-DD 형식의 날짜/시간 문자열, 예: 2016-03-11.
epic_id integer No 이슈를 추가할 에픽의 ID입니다. 유효 값은 0 이상입니다. Premium 및 Ultimate 전용입니다.
epic_iid integer No 이슈를 추가할 에픽의 IID입니다. 유효 값은 0 이상입니다. (사용 중단됨, API 버전 5에서 제거 예정). Premium 및 Ultimate 전용입니다.
iid integer or string No 프로젝트 이슈의 내부 ID입니다(관리자 또는 프로젝트 소유자 권한 필요).
issue_type string No 이슈 유형입니다. issue, incident, test_case, task 중 하나입니다. 기본값은 issue입니다.
labels string No 새 이슈에 할당할 쉼표로 구분된 레이블 이름입니다. 레이블이 없으면 새 프로젝트 레이블을 만들어 이슈에 할당합니다.
merge_request_to_resolve_discussions_of integer No 모든 이슈를 해결할 머지 리퀘스트의 IID입니다. 이슈를 기본 설명으로 채우고 모든 토론을 해결됨으로 표시합니다. 설명이나 제목을 전달하면 기본값보다 우선합니다.
milestone_id integer No 이슈에 할당할 마일스톤의 전역 ID입니다. 마일스톤에 연관된 milestone_id를 찾으려면 마일스톤이 할당된 이슈를 조회하고 API로 이슈 세부 정보를 가져오세요.
title string Yes 이슈의 제목입니다.
weight integer No 이슈의 가중치입니다. 유효 값은 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
   }
}

대상 프로젝트에서 이슈비활성화된 경우 다음 메시지와 함께 403 응답을 받습니다:

{
   "message": "403 Forbidden"
}

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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

속도 제한#

남용을 방지하기 위해 사용자당 분당 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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
add_labels string No 이슈에 추가할 쉼표로 구분된 레이블 이름입니다. 레이블이 없으면 새 프로젝트 레이블을 만들어 이슈에 할당합니다.
assignee_ids integer array No 이슈를 할당할 사용자들의 ID입니다. 0으로 설정하거나 빈 값을 제공하면 모든 담당자 할당이 해제됩니다.
confidential boolean No 이슈를 비밀로 업데이트합니다.
description string No 이슈의 설명입니다. 최대 1,048,576자로 제한됩니다.
discussion_locked boolean No 이슈의 토론이 잠겼는지 여부를 나타내는 플래그입니다. 토론이 잠기면 프로젝트 멤버만 댓글을 추가하거나 편집할 수 있습니다.
due_date string No 기한입니다. YYYY-MM-DD 형식의 날짜/시간 문자열, 예: 2016-03-11.
epic_id integer No 이슈를 추가할 에픽의 ID입니다. 유효 값은 0 이상입니다. Premium 및 Ultimate 전용입니다.
epic_iid integer No 이슈를 추가할 에픽의 IID입니다. 유효 값은 0 이상입니다. (사용 중단됨, API 버전 5에서 제거 예정). Premium 및 Ultimate 전용입니다.
issue_type string No 이슈 유형을 업데이트합니다. issue, incident, test_case 중 하나입니다.
labels string No 이슈의 쉼표로 구분된 레이블 이름입니다. 빈 문자열로 설정하면 모든 레이블 할당이 해제됩니다. 레이블이 없으면 새 프로젝트 레이블을 만들어 이슈에 할당합니다.
milestone_id integer No 이슈에 할당할 마일스톤의 전역 ID입니다. 0으로 설정하거나 빈 값을 제공하면 마일스톤 할당이 해제됩니다.
remove_labels string No 이슈에서 제거할 쉼표로 구분된 레이블 이름입니다.
state_event string No 이슈의 상태 이벤트입니다. 이슈를 닫으려면 close를, 다시 열려면 reopen을 사용하세요.
title string No 이슈의 제목입니다.
updated_at string No 이슈가 업데이트된 시간입니다. ISO 8601 형식의 날짜/시간 문자열, 예: 2016-03-11T03:45:40Z (관리자 또는 프로젝트 소유자 권한 필요). 빈 문자열이나 null 값은 허용되지 않습니다.
weight integer No 이슈의 가중치입니다. 유효 값은 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, //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",
      ...
   }
]
사용 중단:
  • epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

  • assignee 열은 사용 중단되었습니다. GitLab EE API에 맞게 단일 원소 배열 assignees로 표시됩니다.

이슈 삭제#

History

  • Users can delete the issues they authored introduced in GitLab 18.10.

Planner 또는 Owner 역할을 가진 사용자는 모든 이슈를 삭제할 수 있습니다. 다른 프로젝트 멤버는 자신이 작성한 이슈를 삭제할 수 있습니다.

프로젝트에서 지정한 이슈를 삭제합니다.

DELETE /projects/:id/issues/:issue_iid

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
move_after_id integer No 이 이슈 뒤에 배치해야 할 프로젝트 이슈의 전역 ID입니다.
move_before_id integer No 이 이슈 앞에 배치해야 할 프로젝트 이슈의 전역 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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
to_project_id integer Yes 새 프로젝트의 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,
  "imported": false,
  "imported_from": "none",
  "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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

이슈 복제#

지정한 이슈를 다른 프로젝트로 복제합니다. 대상 프로젝트에 레이블이나 마일스톤 등 동등한 기준이 있는 경우 최대한 많은 데이터를 복사합니다.

권한이 부족한 경우 상태 코드 400과 함께 오류 메시지가 반환됩니다.

POST /projects/:id/issues/:issue_iid/clone

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
to_project_id integer Yes 새 프로젝트의 ID입니다.
with_notes boolean No 노트와 함께 이슈를 복제합니다. 기본값은 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,
  "imported":false,
  "imported_from": "none",
  "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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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`로 표시됩니다.

epic_iid 속성은 사용 중단되었으며 API 버전 5에서 제거 예정입니다. 대신 epic 속성의 iid를 사용하세요.

이슈 구독 취소#

인증된 사용자를 지정한 이슈에서 구독 취소하여 알림 수신을 중단합니다. 이슈에 구독되지 않은 경우 상태 코드 304가 반환됩니다.

POST /projects/:id/issues/:issue_iid/unsubscribe

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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_to 빠른 작업을 사용하는 댓글을 추가하여 지정한 이슈를 에픽으로 승격합니다.

자세한 내용은 이슈를 에픽으로 승격을 참고하세요.

POST /projects/:id/issues/:issue_iid/notes

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
body String Yes 노트의 내용입니다. 새 줄의 시작 부분에 /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 Yes 사람이 읽을 수 있는 형식의 기간입니다. 예: 3h30m.
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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 or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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 Yes 사람이 읽을 수 있는 형식의 기간입니다. 예: 3h30m.
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 ID입니다.
summary string No 시간을 사용한 방법에 대한 요약입니다.

요청 예시:

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 integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로입니다.
issue_iid integer Yes 프로젝트 이슈의 내부 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
}

이슈 시간 추적 통계 조회#

지정한 이슈의 시간 추적 통계를 사람이 읽기 쉬운 형식(예: 1h30m)과 초 단위로 조회합니다.

프로젝트가 비공개이거나 이슈가 기밀인 경우 인증 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid/time_stats

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 ID.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/issues/93/time_stats"

응답 예시:

{
  "human_time_estimate": "2h",
  "human_total_time_spent": "1h",
  "time_estimate": 7200,
  "total_time_spent": 3600
}

머지 리퀘스트#

다음 요청들은 이슈와 머지 리퀘스트 간의 관계에 관한 것입니다.

이슈와 관련된 모든 머지 리퀘스트 목록 조회#

지정한 이슈와 관련된 모든 머지 리퀘스트를 조회합니다.

프로젝트가 비공개이거나 이슈가 기밀인 경우 인증 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid/related_merge_requests

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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.",
    "description": "Ut consequatur ipsa aspernatur quisquam voluptatum fugit. Qui harum corporis quo fuga ut incidunt veritatis. Autem necessitatibus et harum occaecati nihil ea.\r\n\r\ntwitter/flight#8",
    "state": "opened",
    "created_at": "2018-09-18T14:36:15.510Z",
    "updated_at": "2018-09-19T07:45:13.089Z",
    "closed_by": null,
    "closed_at": null,
    "target_branch": "v2.x",
    "source_branch": "so_long_jquery",
    "user_notes_count": 9,
    "upvotes": 0,
    "downvotes": 0,
    "author": {
      "id": 14,
      "name": "Verna Hills",
      "username": "lawanda_reinger",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/de68a91aeab1cff563795fb98a0c2cc0?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/lawanda_reinger"
    },
    "assignee": {
      "id": 19,
      "name": "Jody Baumbach",
      "username": "felipa.kuvalis",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/6541fc75fc4e87e203529bd275fafd07?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/felipa.kuvalis"
    },
    "source_project_id": 1,
    "target_project_id": 1,
    "labels": [],
    "draft": false,
    "work_in_progress": false,
    "milestone": {
      "id": 27,
      "iid": 2,
      "project_id": 1,
      "title": "v1.0",
      "description": "Et tenetur voluptatem minima doloribus vero dignissimos vitae.",
      "state": "active",
      "created_at": "2018-09-18T14:35:44.353Z",
      "updated_at": "2018-09-18T14:35:44.353Z",
      "due_date": null,
      "start_date": null,
      "web_url": "https://gitlab.example.com/twitter/flight/milestones/2"
    },
    "merge_when_pipeline_succeeds": false,
    "merge_status": "cannot_be_merged",
    "sha": "3b7b528e9353295c1c125dad281ac5b5deae5f12",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "discussion_locked": null,
    "should_remove_source_branch": null,
    "force_remove_source_branch": false,
    "reference": "!11",
    "web_url": "https://gitlab.example.com/twitter/flight/merge_requests/4",
    "references": {
      "short": "!4",
      "relative": "!4",
      "full": "twitter/flight!4"
    },
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    },
    "squash": false,
    "task_completion_status": {
      "count": 0,
      "completed_count": 0
    },
    "changes_count": "10",
    "latest_build_started_at": "2018-12-05T01:16:41.723Z",
    "latest_build_finished_at": "2018-12-05T02:35:54.046Z",
    "first_deployed_to_production_at": null,
    "pipeline": {
      "id": 38980952,
      "sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
      "ref": "test-branch",
      "status": "success",
      "web_url": "https://gitlab.com/gitlab-org/gitlab/pipelines/38980952"
    },
    "head_pipeline": {
      "id": 38980952,
      "sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
      "ref": "test-branch",
      "status": "success",
      "web_url": "https://gitlab.example.com/twitter/flight/pipelines/38980952",
      "before_sha": "3c738a37eb23cf4c0ed0d45d6ddde8aad4a8da51",
      "tag": false,
      "yaml_errors": null,
      "user": {
        "id": 19,
        "name": "Jody Baumbach",
        "username": "felipa.kuvalis",
        "state": "active",
        "avatar_url": "https://www.gravatar.com/avatar/6541fc75fc4e87e203529bd275fafd07?s=80&d=identicon",
        "web_url": "https://gitlab.example.com/felipa.kuvalis"
      },
      "created_at": "2018-12-05T01:16:13.342Z",
      "updated_at": "2018-12-05T02:35:54.086Z",
      "started_at": "2018-12-05T01:16:41.723Z",
      "finished_at": "2018-12-05T02:35:54.046Z",
      "committed_at": null,
      "duration": 4436,
      "coverage": "46.68",
      "detailed_status": {
        "icon": "status_warning",
        "text": "passed",
        "label": "passed with warnings",
        "group": "success-with-warnings",
        "tooltip": "passed",
        "has_details": true,
        "details_path": "/twitter/flight/pipelines/38",
        "illustration": null,
        "favicon": "https://gitlab.example.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png"
      },
      "archived": false
    },
    "diff_refs": {
      "base_sha": "d052d768f0126e8cddf80afd8b1eb07f406a3fcb",
      "head_sha": "81c6a84c7aebd45a1ac2c654aa87f11e32338e0a",
      "start_sha": "d052d768f0126e8cddf80afd8b1eb07f406a3fcb"
    },
    "merge_error": null,
    "user": {
      "can_merge": true
    }
  }
]

이슈를 닫는 모든 머지 리퀘스트 목록 조회#

머지 시 지정한 이슈를 닫는 모든 머지 리퀘스트를 조회합니다.

프로젝트가 비공개이거나 이슈가 기밀인 경우 인증 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid/closed_by

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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,
    "downvotes": 0,
    "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"
    },
    "assignee": null,
    "source_project_id": 1,
    "target_project_id": 1,
    "closed_at": null,
    "closed_by": null,
    "labels": [],
    "draft": false,
    "work_in_progress": false,
    "milestone": null,
    "merge_when_pipeline_succeeds": false,
    "merge_status": "unchecked",
    "sha": "5a62481d563af92b8e32d735f2fa63b94e806835",
    "merge_commit_sha": null,
    "squash_commit_sha": null,
    "user_notes_count": 1,
    "should_remove_source_branch": null,
    "force_remove_source_branch": false,
    "web_url": "https://gitlab.example.com/gitlab-org/gitlab-test/merge_requests/6432",
    "reference": "!6432",
    "references": {
      "short": "!6432",
      "relative": "!6432",
      "full": "gitlab-org/gitlab-test!6432"
    },
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    }
  }
]

이슈 참여자 전체 목록 조회#

지정한 이슈에 참여 중인 모든 사용자를 조회합니다.

프로젝트가 비공개이거나 이슈가 기밀인 경우 인증 자격 증명을 제공해야 합니다. 권장 방법은 개인 액세스 토큰을 사용하는 것입니다.

GET /projects/:id/issues/:issue_iid/participants

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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",
    "avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/user1"
  },
  {
    "id": 5,
    "name": "John Doe5",
    "username": "user5",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/4aea8cf834ed91844a2da4ff7ae6b491?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/user5"
  }
]

이슈 댓글#

노트 API를 사용하여 댓글과 상호작용합니다.

이슈 사용자 에이전트 세부정보 조회#

관리자만 사용할 수 있습니다.

지정한 이슈를 생성한 사용자의 사용자 에이전트 문자열과 IP 주소를 조회합니다. 스팸 추적에 사용됩니다.

GET /projects/:id/issues/:issue_iid/user_agent_detail

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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를 사용하세요.

인시던트#

다음 요청들은 인시던트에만 사용할 수 있습니다.

인시던트에 메트릭 이미지 업로드#

인시던트에만 사용할 수 있습니다.

지정한 인시던트의 Metrics 탭에 표시할 메트릭 차트 스크린샷을 업로드합니다. 이미지를 업로드할 때 텍스트 또는 원본 그래프 링크를 이미지와 연결할 수 있습니다. URL을 추가하면 업로드된 이미지 위의 하이퍼링크를 선택하여 원본 그래프에 접근할 수 있습니다.

POST /projects/:id/issues/:issue_iid/metric_images

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 ID.
file file Yes 업로드할 이미지 파일.
url string No 메트릭 정보를 더 볼 수 있는 URL.
url_text string No 이미지 또는 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"
}

인시던트의 모든 메트릭 이미지 목록 조회#

인시던트에만 사용할 수 있습니다.

지정한 인시던트의 Metrics 탭에 표시된 메트릭 차트 스크린샷을 모두 조회합니다.

GET /projects/:id/issues/:issue_iid/metric_images

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 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"
    }
]

인시던트의 메트릭 이미지 업데이트#

인시던트에만 사용할 수 있습니다.

인시던트의 Metrics 탭에 표시된 지정한 메트릭 이미지의 속성을 업데이트합니다.

PUT /projects/:id/issues/:issue_iid/metric_images/:image_id

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 ID.
image_id integer Yes 이미지의 ID.
url string No 메트릭 정보를 더 볼 수 있는 URL.
url_text string No 이미지 또는 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"
}

인시던트에서 메트릭 이미지 삭제#

인시던트에만 사용할 수 있습니다.

인시던트의 Metrics 탭에서 지정한 메트릭 이미지를 삭제합니다.

DELETE /projects/:id/issues/:issue_iid/metric_images/:image_id

지원 속성:

속성 유형 필수 여부 설명
id integer or string Yes 프로젝트의 전역 ID 또는 URL 인코딩된 경로.
issue_iid integer Yes 프로젝트 이슈의 내부 ID.
image_id integer Yes 이미지의 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: 이미지를 삭제할 수 없는 경우.