InfoGrab DocsInfoGrab Docs

Epics API (deprecated)

요약

Epics REST API는 GitLab 17.0에서 지원 중단되었으며 API v5에서 제거될 예정입니다. 에픽에 대한 모든 API 호출에는 인증이 필요합니다. 사용자가 비공개 그룹의 멤버가 아니면 해당 그룹에 대한 GET 요청은 404 상태 코드를 반환합니다.

Warning

Epics REST API는 GitLab 17.0에서 지원 중단되었으며 API v5에서 제거될 예정입니다. GitLab 17.4부터 18.0 까지는 에픽의 새 화면이 활성화된 경우, 그리고 GitLab 18.1 이후에는 Work Items API를 대신 사용합니다. 자세한 내용은 에픽 API를 작업 항목으로 마이그레이션을 참고합니다. 이 변경은 브레이킹 체인지입니다.

에픽에 대한 모든 API 호출에는 인증이 필요합니다.

사용자가 비공개 그룹의 멤버가 아니면 해당 그룹에 대한 GET 요청은 404 상태 코드를 반환합니다.

에픽 기능을 사용할 수 없으면 403 상태 코드가 반환됩니다.

레거시 에픽 ID와 WorkItem ID#

레거시 에픽 ID는 WorkItem ID와 다릅니다. iid만 일치합니다. 다만 에픽에 대응하는 WorkItem ID를 확인할 수 있도록 응답에 work_item_id가 포함됩니다.

이 ID는 WorkItem GraphQL API에서 사용할 수 있습니다. 예를 들어 work_item_id는 WorkItem GraphQL API에서 Global ID gid://gitlab/WorkItem/123에 해당합니다.

에픽 이슈 API#

에픽 이슈 API로 에픽에 연결된 이슈를 다룰 수 있습니다.

마일스톤 날짜 연동#

시작일과 마감일은 연관된 이슈 마일스톤에서 동적으로 가져올 수 있으므로, 사용자에게 편집 권한이 있으면 추가 필드가 표시됩니다. 여기에는 불리언 필드 두 개 start_date_is_fixed와 due_date_is_fixed, 그리고 날짜 필드 네 개 start_date_fixed, start_date_from_inherited_source, due_date_fixed, due_date_from_inherited_source가 포함됩니다.

  • end_date는 지원 중단되었으며 due_date로 대체되었습니다.
  • start_date_from_milestones는 지원 중단되었으며 start_date_from_inherited_source로 대체되었습니다.
  • due_date_from_milestones는 지원 중단되었으며 due_date_from_inherited_source로 대체되었습니다.

그룹 에픽 전체 조회#

지정한 그룹과 그 하위 그룹의 모든 에픽을 조회합니다.

응답은 페이지네이션이 적용되며 기본으로 20 건을 반환합니다.

Note

references.relative는 에픽을 요청한 그룹을 기준으로 한 상대 경로입니다. 에픽을 원래 속한 그룹에서 가져오면 relative 형식은 short 형식과 같습니다. 그룹을 넘어 에픽을 요청하면 relative 형식은 full 형식과 같습니다.

GET /groups/:id/epics
GET /groups/:id/epics?author_id=5
GET /groups/:id/epics?labels=bug,reproduced
GET /groups/:id/epics?state=opened
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
author_id integer 아니요 지정한 사용자 id가 생성한 에픽을 반환합니다
author_username string 아니요 지정한 username의 사용자가 생성한 에픽을 반환합니다.
labels string 아니요 쉼표로 구분한 레이블 이름 목록과 일치하는 에픽을 반환합니다. 에픽이 속한 그룹 또는 상위 그룹의 레이블 이름을 사용할 수 있습니다
with_labels_details boolean 아니요 true 이면 응답의 labels 필드에서 각 레이블의 상세 정보 :name, :color, :description, :description_html, :text_color를 반환합니다. 기본값은 false 입니다.
order_by string 아니요 created_at, updated_at, title 필드를 기준으로 정렬한 에픽을 반환합니다. 기본값은 created_at 입니다
sort string 아니요 asc 또는 desc 순으로 정렬한 에픽을 반환합니다. 기본값은 desc 입니다
search string 아니요 에픽의 title과 description을 대상으로 검색합니다
state string 아니요 에픽의 state를 대상으로 검색합니다. 사용 가능한 필터는 opened, closed, all 이며 기본값은 all 입니다
created_after datetime 아니요 지정한 시각 이후에 생성된 에픽을 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z)이어야 합니다
created_before datetime 아니요 지정한 시각 이전에 생성된 에픽을 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z)이어야 합니다
updated_after datetime 아니요 지정한 시각 이후에 수정된 에픽을 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z)이어야 합니다
updated_before datetime 아니요 지정한 시각 이전에 수정된 에픽을 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z)이어야 합니다
include_ancestor_groups boolean 아니요 요청한 그룹의 상위 그룹에 속한 에픽을 포함합니다. 기본값은 false 입니다
include_descendant_groups boolean 아니요 요청한 그룹의 하위 그룹에 속한 에픽을 포함합니다. 기본값은 true 입니다
my_reaction_emoji string 아니요 인증된 사용자가 지정한 이모지로 반응한 에픽을 반환합니다. None은 반응이 없는 에픽을, Any는 반응이 하나 이상 있는 에픽을 반환합니다.
not Hash 아니요 지정한 파라미터와 일치하지 않는 에픽을 반환합니다. author_id, author_username, labels를 허용합니다.
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics"

응답 예시:

[
  {
  "id": 29,
  "work_item_id": 1032,
  "iid": 4,
  "group_id": 7,
  "parent_id": 23,
  "parent_iid": 3,
  "title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
  "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
  "state": "opened",
  "confidential": "false",
  "web_url": "http://gitlab.example.com/groups/test/-/epics/4",
  "reference": "&4",
  "references": {
    "short": "&4",
    "relative": "&4",
    "full": "test&4"
  },
  "author": {
    "id": 10,
    "name": "Lu Mayer",
    "username": "kam",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/018729e129a6f31c80a6327a30196823?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/kam"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf",
  "_links":{
      "self": "http://gitlab.example.com/api/v4/groups/7/epics/4",
      "epic_issues": "http://gitlab.example.com/api/v4/groups/7/epics/4/issues",
      "group":"http://gitlab.example.com/api/v4/groups/7",
      "parent":"http://gitlab.example.com/api/v4/groups/7/epics/3"
  }
  },
  {
  "id": 50,
  "work_item_id": 1035,
  "iid": 35,
  "group_id": 17,
  "parent_id": 19,
  "parent_iid": 1,
  "title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
  "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
  "state": "opened",
  "web_url": "http://gitlab.example.com/groups/test/sample/-/epics/35",
  "reference": "&4",
  "references": {
    "short": "&4",
    "relative": "sample&4",
    "full": "test/sample&4"
  },
  "author": {
    "id": 10,
    "name": "Lu Mayer",
    "username": "kam",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/018729e129a6f31c80a6327a30196823?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/kam"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "imported": false,
  "imported_from": "none",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf",
  "_links":{
      "self": "http://gitlab.example.com/api/v4/groups/17/epics/35",
      "epic_issues": "http://gitlab.example.com/api/v4/groups/17/epics/35/issues",
      "group":"http://gitlab.example.com/api/v4/groups/17",
      "parent":"http://gitlab.example.com/api/v4/groups/17/epics/1"
  }
  }
]

에픽 조회#

그룹에서 지정한 에픽을 조회합니다.

GET /groups/:id/epics/:epic_iid
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
epic_iid integer or string 예 에픽의 내부 ID 입니다.
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics/5"

응답 예시:

{
  "id": 30,
  "work_item_id": 1099,
  "iid": 5,
  "group_id": 7,
  "parent_id": null,
  "parent_iid": null,
  "title": "Ea cupiditate dolores ut vero consequatur quasi veniam voluptatem et non.",
  "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
  "state": "opened",
  "imported": false,
  "imported_from": "none",
  "web_url": "http://gitlab.example.com/groups/test/-/epics/5",
  "reference": "&5",
  "references": {
    "short": "&5",
    "relative": "&5",
    "full": "test&5"
  },
  "author":{
    "id": 7,
    "name": "Pamella Huel",
    "username": "arnita",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/a2f5c6fcef64c9c69cb8779cb292be1b?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/arnita"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf",
  "subscribed": true,
  "_links":{
      "self": "http://gitlab.example.com/api/v4/groups/7/epics/5",
      "epic_issues": "http://gitlab.example.com/api/v4/groups/7/epics/5/issues",
      "group":"http://gitlab.example.com/api/v4/groups/7",
      "parent": null
  }
}

에픽 생성#

지정한 그룹에 에픽을 생성합니다.

Note

GitLab 11.3부터 start_date와 end_date는 복합 값을 나타내므로 직접 지정하지 않습니다. 대신 *_is_fixed와 *_fixed 필드로 설정합니다.

POST /groups/:id/epics
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
title string 예 에픽의 제목
labels string 아니요 쉼표로 구분한 레이블 목록
description string 아니요 에픽의 설명. 1,048,576 자로 제한됩니다.
color string 아니요 에픽의 색상. epic_highlight_color 기능 플래그(기본으로 비활성)의 적용을 받습니다
confidential boolean 아니요 에픽을 비공개로 설정할지 여부
created_at string 아니요 에픽이 생성된 시점. ISO 8601 형식의 날짜·시간 문자열이며 예를 들어 2016-03-11T03:45:40Z 입니다. 관리자 또는 프로젝트·그룹 Owner 권한이 필요합니다
start_date_is_fixed boolean 아니요 시작일을 start_date_fixed에서 가져올지 마일스톤에서 가져올지 여부
start_date_fixed string 아니요 에픽의 고정 시작일
due_date_is_fixed boolean 아니요 마감일을 due_date_fixed에서 가져올지 마일스톤에서 가져올지 여부
due_date_fixed string 아니요 에픽의 고정 마감일
parent_id integer or string 아니요 상위 에픽의 ID
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics?title=Epic&description=Epic%20description&parent_id=29"

응답 예시:

{
  "id": 33,
  "work_item_id": 1020,
  "iid": 6,
  "group_id": 7,
  "parent_id": 29,
  "parent_iid": 4,
  "title": "Epic",
  "description": "Epic description",
  "state": "opened",
  "imported": false,
  "imported_from": "none",
  "confidential": "false",
  "web_url": "http://gitlab.example.com/groups/test/-/epics/6",
  "reference": "&6",
  "references": {
    "short": "&6",
    "relative": "&6",
    "full": "test&6"
  },
  "author": {
    "name" : "Alexandra Bashirian",
    "avatar_url" : null,
    "state" : "active",
    "web_url" : "https://gitlab.example.com/eileen.lowe",
    "id" : 18,
    "username" : "eileen.lowe"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf",
  "_links":{
    "self": "http://gitlab.example.com/api/v4/groups/7/epics/6",
    "epic_issues": "http://gitlab.example.com/api/v4/groups/7/epics/6/issues",
    "group":"http://gitlab.example.com/api/v4/groups/7",
    "parent": "http://gitlab.example.com/api/v4/groups/7/epics/4"
  }
}

에픽 수정#

그룹에서 지정한 에픽을 수정합니다.

PUT /groups/:id/epics/:epic_iid
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
epic_iid integer or string 예 에픽의 내부 ID
add_labels string 아니요 이슈에 추가할 레이블 이름을 쉼표로 구분한 목록입니다.
confidential boolean 아니요 에픽을 비공개로 설정할지 여부
description string 아니요 에픽의 설명. 1,048,576 자로 제한됩니다.
due_date_fixed string 아니요 에픽의 고정 마감일
due_date_is_fixed boolean 아니요 마감일을 due_date_fixed에서 가져올지 마일스톤에서 가져올지 여부
labels string 아니요 이슈에 지정할 레이블 이름을 쉼표로 구분한 목록입니다. 빈 문자열로 설정하면 모든 레이블이 해제됩니다.
parent_id integer or string 아니요 상위 에픽의 ID 입니다.
remove_labels string 아니요 이슈에서 제거할 레이블 이름을 쉼표로 구분한 목록입니다.
start_date_fixed string 아니요 에픽의 고정 시작일
start_date_is_fixed boolean 아니요 시작일을 start_date_fixed에서 가져올지 마일스톤에서 가져올지 여부
state_event string 아니요 에픽의 상태 이벤트. 에픽을 닫으려면 close, 다시 열려면 reopen으로 설정합니다
title string 아니요 에픽의 제목
updated_at string 아니요 에픽이 수정된 시점. ISO 8601 형식의 날짜·시간 문자열이며 예를 들어 2016-03-11T03:45:40Z 입니다. 관리자 또는 프로젝트·그룹 Owner 권한이 필요합니다
color string 아니요 에픽의 색상. epic_highlight_color 기능 플래그(기본으로 비활성)의 적용을 받습니다
curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics/5?title=New%20Title&parent_id=29"

응답 예시:

{
  "id": 33,
  "work_item_id": 1019,
  "iid": 6,
  "group_id": 7,
  "parent_id": 29,
  "parent_iid": 4,
  "title": "New Title",
  "description": "Epic description",
  "state": "opened",
  "imported": false,
  "imported_from": "none",
  "confidential": "false",
  "web_url": "http://gitlab.example.com/groups/test/-/epics/6",
  "reference": "&6",
  "references": {
    "short": "&6",
    "relative": "&6",
    "full": "test&6"
  },
  "author": {
    "name" : "Alexandra Bashirian",
    "avatar_url" : null,
    "state" : "active",
    "web_url" : "https://gitlab.example.com/eileen.lowe",
    "id" : 18,
    "username" : "eileen.lowe"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf"
}

에픽 삭제#

그룹에서 지정한 에픽을 삭제합니다.

에픽을 삭제해도 하위 에픽은 삭제되지 않습니다. 하위 에픽은 삭제된 에픽에서 분리됩니다.

Warning

GitLab 16.10 및 그 이전 버전에서는 에픽을 삭제하면 모든 하위 에픽과 그 하위 항목까지 함께 삭제되었습니다. 필요하다면 에픽을 삭제하기 전에 상위 에픽에서 하위 에픽을 분리합니다. 자세한 내용은 이슈 452189를 참고합니다.

DELETE /groups/:id/epics/:epic_iid
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
epic_iid integer or string 예 에픽의 내부 ID 입니다.
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics/5"

에픽에 할 일 항목 생성#

지정한 에픽에 현재 사용자의 할 일 항목을 생성합니다. 해당 에픽에 이미 사용자의 할 일 항목이 있으면 상태 코드 304가 반환됩니다.

POST /groups/:id/epics/:epic_iid/todo
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
epic_iid integer 예 그룹 에픽의 내부 ID
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics/5/todo"

응답 예시:

{
  "id": 112,
  "group": {
    "id": 1,
    "name": "Gitlab",
    "path": "gitlab",
    "kind": "group",
    "full_path": "base/gitlab",
    "parent_id": null
  },
  "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": "epic",
  "target": {
    "id": 30,
    "iid": 5,
    "group_id": 1,
    "title": "Ea cupiditate dolores ut vero consequatur quasi veniam voluptatem et non.",
    "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
    "author":{
      "id": 7,
      "name": "Pamella Huel",
      "username": "arnita",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/a2f5c6fcef64c9c69cb8779cb292be1b?s=80&d=identicon",
      "web_url": "http://gitlab.example.com/arnita"
    },
    "web_url": "http://gitlab.example.com/groups/test/-/epics/5",
    "reference": "&5",
    "references": {
      "short": "&5",
      "relative": "&5",
      "full": "test&5"
    },
    "start_date": null,
    "end_date": null,
    "created_at": "2018-01-21T06:21:13.165Z",
    "updated_at": "2018-01-22T12:41:41.166Z",
    "closed_at": "2018-08-18T12:22:05.239Z"
  },
  "target_url": "https://gitlab.example.com/groups/epics/5",
  "body": "Vel voluptas atque dicta mollitia adipisci qui at.",
  "state": "pending",
  "created_at": "2016-07-01T11:09:13.992Z"
}

Epics API (deprecated)

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

요약

Epics REST API는 GitLab 17.0에서 지원 중단되었으며 API v5에서 제거될 예정입니다. 에픽에 대한 모든 API 호출에는 인증이 필요합니다. 사용자가 비공개 그룹의 멤버가 아니면 해당 그룹에 대한 GET 요청은 404 상태 코드를 반환합니다.

Warning

Epics REST API는 GitLab 17.0에서 지원 중단되었으며 API v5에서 제거될 예정입니다. GitLab 17.4부터 18.0 까지는 에픽의 새 화면이 활성화된 경우, 그리고 GitLab 18.1 이후에는 Work Items API를 대신 사용합니다. 자세한 내용은 에픽 API를 작업 항목으로 마이그레이션을 참고합니다. 이 변경은 브레이킹 체인지입니다.

에픽에 대한 모든 API 호출에는 인증이 필요합니다.

사용자가 비공개 그룹의 멤버가 아니면 해당 그룹에 대한 GET 요청은 404 상태 코드를 반환합니다.

에픽 기능을 사용할 수 없으면 403 상태 코드가 반환됩니다.

레거시 에픽 ID와 WorkItem ID#

레거시 에픽 ID는 WorkItem ID와 다릅니다. iid만 일치합니다. 다만 에픽에 대응하는 WorkItem ID를 확인할 수 있도록 응답에 work_item_id가 포함됩니다.

이 ID는 WorkItem GraphQL API에서 사용할 수 있습니다. 예를 들어 work_item_id는 WorkItem GraphQL API에서 Global ID gid://gitlab/WorkItem/123에 해당합니다.

에픽 이슈 API#

에픽 이슈 API로 에픽에 연결된 이슈를 다룰 수 있습니다.

마일스톤 날짜 연동#

시작일과 마감일은 연관된 이슈 마일스톤에서 동적으로 가져올 수 있으므로, 사용자에게 편집 권한이 있으면 추가 필드가 표시됩니다. 여기에는 불리언 필드 두 개 start_date_is_fixed와 due_date_is_fixed, 그리고 날짜 필드 네 개 start_date_fixed, start_date_from_inherited_source, due_date_fixed, due_date_from_inherited_source가 포함됩니다.

  • end_date는 지원 중단되었으며 due_date로 대체되었습니다.
  • start_date_from_milestones는 지원 중단되었으며 start_date_from_inherited_source로 대체되었습니다.
  • due_date_from_milestones는 지원 중단되었으며 due_date_from_inherited_source로 대체되었습니다.

그룹 에픽 전체 조회#

지정한 그룹과 그 하위 그룹의 모든 에픽을 조회합니다.

응답은 페이지네이션이 적용되며 기본으로 20 건을 반환합니다.

Note

references.relative는 에픽을 요청한 그룹을 기준으로 한 상대 경로입니다. 에픽을 원래 속한 그룹에서 가져오면 relative 형식은 short 형식과 같습니다. 그룹을 넘어 에픽을 요청하면 relative 형식은 full 형식과 같습니다.

GET /groups/:id/epics
GET /groups/:id/epics?author_id=5
GET /groups/:id/epics?labels=bug,reproduced
GET /groups/:id/epics?state=opened
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
author_id integer 아니요 지정한 사용자 id가 생성한 에픽을 반환합니다
author_username string 아니요 지정한 username의 사용자가 생성한 에픽을 반환합니다.
labels string 아니요 쉼표로 구분한 레이블 이름 목록과 일치하는 에픽을 반환합니다. 에픽이 속한 그룹 또는 상위 그룹의 레이블 이름을 사용할 수 있습니다
with_labels_details boolean 아니요 true 이면 응답의 labels 필드에서 각 레이블의 상세 정보 :name, :color, :description, :description_html, :text_color를 반환합니다. 기본값은 false 입니다.
order_by string 아니요 created_at, updated_at, title 필드를 기준으로 정렬한 에픽을 반환합니다. 기본값은 created_at 입니다
sort string 아니요 asc 또는 desc 순으로 정렬한 에픽을 반환합니다. 기본값은 desc 입니다
search string 아니요 에픽의 title과 description을 대상으로 검색합니다
state string 아니요 에픽의 state를 대상으로 검색합니다. 사용 가능한 필터는 opened, closed, all 이며 기본값은 all 입니다
created_after datetime 아니요 지정한 시각 이후에 생성된 에픽을 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z)이어야 합니다
created_before datetime 아니요 지정한 시각 이전에 생성된 에픽을 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z)이어야 합니다
updated_after datetime 아니요 지정한 시각 이후에 수정된 에픽을 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z)이어야 합니다
updated_before datetime 아니요 지정한 시각 이전에 수정된 에픽을 반환합니다. ISO 8601 형식(2019-03-15T08:00:00Z)이어야 합니다
include_ancestor_groups boolean 아니요 요청한 그룹의 상위 그룹에 속한 에픽을 포함합니다. 기본값은 false 입니다
include_descendant_groups boolean 아니요 요청한 그룹의 하위 그룹에 속한 에픽을 포함합니다. 기본값은 true 입니다
my_reaction_emoji string 아니요 인증된 사용자가 지정한 이모지로 반응한 에픽을 반환합니다. None은 반응이 없는 에픽을, Any는 반응이 하나 이상 있는 에픽을 반환합니다.
not Hash 아니요 지정한 파라미터와 일치하지 않는 에픽을 반환합니다. author_id, author_username, labels를 허용합니다.
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics"

응답 예시:

[
  {
  "id": 29,
  "work_item_id": 1032,
  "iid": 4,
  "group_id": 7,
  "parent_id": 23,
  "parent_iid": 3,
  "title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
  "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
  "state": "opened",
  "confidential": "false",
  "web_url": "http://gitlab.example.com/groups/test/-/epics/4",
  "reference": "&4",
  "references": {
    "short": "&4",
    "relative": "&4",
    "full": "test&4"
  },
  "author": {
    "id": 10,
    "name": "Lu Mayer",
    "username": "kam",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/018729e129a6f31c80a6327a30196823?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/kam"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf",
  "_links":{
      "self": "http://gitlab.example.com/api/v4/groups/7/epics/4",
      "epic_issues": "http://gitlab.example.com/api/v4/groups/7/epics/4/issues",
      "group":"http://gitlab.example.com/api/v4/groups/7",
      "parent":"http://gitlab.example.com/api/v4/groups/7/epics/3"
  }
  },
  {
  "id": 50,
  "work_item_id": 1035,
  "iid": 35,
  "group_id": 17,
  "parent_id": 19,
  "parent_iid": 1,
  "title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
  "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
  "state": "opened",
  "web_url": "http://gitlab.example.com/groups/test/sample/-/epics/35",
  "reference": "&4",
  "references": {
    "short": "&4",
    "relative": "sample&4",
    "full": "test/sample&4"
  },
  "author": {
    "id": 10,
    "name": "Lu Mayer",
    "username": "kam",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/018729e129a6f31c80a6327a30196823?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/kam"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "imported": false,
  "imported_from": "none",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf",
  "_links":{
      "self": "http://gitlab.example.com/api/v4/groups/17/epics/35",
      "epic_issues": "http://gitlab.example.com/api/v4/groups/17/epics/35/issues",
      "group":"http://gitlab.example.com/api/v4/groups/17",
      "parent":"http://gitlab.example.com/api/v4/groups/17/epics/1"
  }
  }
]

에픽 조회#

그룹에서 지정한 에픽을 조회합니다.

GET /groups/:id/epics/:epic_iid
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
epic_iid integer or string 예 에픽의 내부 ID 입니다.
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics/5"

응답 예시:

{
  "id": 30,
  "work_item_id": 1099,
  "iid": 5,
  "group_id": 7,
  "parent_id": null,
  "parent_iid": null,
  "title": "Ea cupiditate dolores ut vero consequatur quasi veniam voluptatem et non.",
  "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
  "state": "opened",
  "imported": false,
  "imported_from": "none",
  "web_url": "http://gitlab.example.com/groups/test/-/epics/5",
  "reference": "&5",
  "references": {
    "short": "&5",
    "relative": "&5",
    "full": "test&5"
  },
  "author":{
    "id": 7,
    "name": "Pamella Huel",
    "username": "arnita",
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/a2f5c6fcef64c9c69cb8779cb292be1b?s=80&d=identicon",
    "web_url": "http://gitlab.example.com/arnita"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf",
  "subscribed": true,
  "_links":{
      "self": "http://gitlab.example.com/api/v4/groups/7/epics/5",
      "epic_issues": "http://gitlab.example.com/api/v4/groups/7/epics/5/issues",
      "group":"http://gitlab.example.com/api/v4/groups/7",
      "parent": null
  }
}

에픽 생성#

지정한 그룹에 에픽을 생성합니다.

Note

GitLab 11.3부터 start_date와 end_date는 복합 값을 나타내므로 직접 지정하지 않습니다. 대신 *_is_fixed와 *_fixed 필드로 설정합니다.

POST /groups/:id/epics
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
title string 예 에픽의 제목
labels string 아니요 쉼표로 구분한 레이블 목록
description string 아니요 에픽의 설명. 1,048,576 자로 제한됩니다.
color string 아니요 에픽의 색상. epic_highlight_color 기능 플래그(기본으로 비활성)의 적용을 받습니다
confidential boolean 아니요 에픽을 비공개로 설정할지 여부
created_at string 아니요 에픽이 생성된 시점. ISO 8601 형식의 날짜·시간 문자열이며 예를 들어 2016-03-11T03:45:40Z 입니다. 관리자 또는 프로젝트·그룹 Owner 권한이 필요합니다
start_date_is_fixed boolean 아니요 시작일을 start_date_fixed에서 가져올지 마일스톤에서 가져올지 여부
start_date_fixed string 아니요 에픽의 고정 시작일
due_date_is_fixed boolean 아니요 마감일을 due_date_fixed에서 가져올지 마일스톤에서 가져올지 여부
due_date_fixed string 아니요 에픽의 고정 마감일
parent_id integer or string 아니요 상위 에픽의 ID
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics?title=Epic&description=Epic%20description&parent_id=29"

응답 예시:

{
  "id": 33,
  "work_item_id": 1020,
  "iid": 6,
  "group_id": 7,
  "parent_id": 29,
  "parent_iid": 4,
  "title": "Epic",
  "description": "Epic description",
  "state": "opened",
  "imported": false,
  "imported_from": "none",
  "confidential": "false",
  "web_url": "http://gitlab.example.com/groups/test/-/epics/6",
  "reference": "&6",
  "references": {
    "short": "&6",
    "relative": "&6",
    "full": "test&6"
  },
  "author": {
    "name" : "Alexandra Bashirian",
    "avatar_url" : null,
    "state" : "active",
    "web_url" : "https://gitlab.example.com/eileen.lowe",
    "id" : 18,
    "username" : "eileen.lowe"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf",
  "_links":{
    "self": "http://gitlab.example.com/api/v4/groups/7/epics/6",
    "epic_issues": "http://gitlab.example.com/api/v4/groups/7/epics/6/issues",
    "group":"http://gitlab.example.com/api/v4/groups/7",
    "parent": "http://gitlab.example.com/api/v4/groups/7/epics/4"
  }
}

에픽 수정#

그룹에서 지정한 에픽을 수정합니다.

PUT /groups/:id/epics/:epic_iid
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
epic_iid integer or string 예 에픽의 내부 ID
add_labels string 아니요 이슈에 추가할 레이블 이름을 쉼표로 구분한 목록입니다.
confidential boolean 아니요 에픽을 비공개로 설정할지 여부
description string 아니요 에픽의 설명. 1,048,576 자로 제한됩니다.
due_date_fixed string 아니요 에픽의 고정 마감일
due_date_is_fixed boolean 아니요 마감일을 due_date_fixed에서 가져올지 마일스톤에서 가져올지 여부
labels string 아니요 이슈에 지정할 레이블 이름을 쉼표로 구분한 목록입니다. 빈 문자열로 설정하면 모든 레이블이 해제됩니다.
parent_id integer or string 아니요 상위 에픽의 ID 입니다.
remove_labels string 아니요 이슈에서 제거할 레이블 이름을 쉼표로 구분한 목록입니다.
start_date_fixed string 아니요 에픽의 고정 시작일
start_date_is_fixed boolean 아니요 시작일을 start_date_fixed에서 가져올지 마일스톤에서 가져올지 여부
state_event string 아니요 에픽의 상태 이벤트. 에픽을 닫으려면 close, 다시 열려면 reopen으로 설정합니다
title string 아니요 에픽의 제목
updated_at string 아니요 에픽이 수정된 시점. ISO 8601 형식의 날짜·시간 문자열이며 예를 들어 2016-03-11T03:45:40Z 입니다. 관리자 또는 프로젝트·그룹 Owner 권한이 필요합니다
color string 아니요 에픽의 색상. epic_highlight_color 기능 플래그(기본으로 비활성)의 적용을 받습니다
curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics/5?title=New%20Title&parent_id=29"

응답 예시:

{
  "id": 33,
  "work_item_id": 1019,
  "iid": 6,
  "group_id": 7,
  "parent_id": 29,
  "parent_iid": 4,
  "title": "New Title",
  "description": "Epic description",
  "state": "opened",
  "imported": false,
  "imported_from": "none",
  "confidential": "false",
  "web_url": "http://gitlab.example.com/groups/test/-/epics/6",
  "reference": "&6",
  "references": {
    "short": "&6",
    "relative": "&6",
    "full": "test&6"
  },
  "author": {
    "name" : "Alexandra Bashirian",
    "avatar_url" : null,
    "state" : "active",
    "web_url" : "https://gitlab.example.com/eileen.lowe",
    "id" : 18,
    "username" : "eileen.lowe"
  },
  "start_date": null,
  "start_date_is_fixed": false,
  "start_date_fixed": null,
  "start_date_from_milestones": null,       //deprecated in favor of start_date_from_inherited_source
  "start_date_from_inherited_source": null,
  "end_date": "2018-07-31",                 //deprecated in favor of due_date
  "due_date": "2018-07-31",
  "due_date_is_fixed": false,
  "due_date_fixed": null,
  "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source
  "due_date_from_inherited_source": "2018-07-31",
  "created_at": "2018-07-17T13:36:22.770Z",
  "updated_at": "2018-07-18T12:22:05.239Z",
  "closed_at": "2018-08-18T12:22:05.239Z",
  "labels": [],
  "upvotes": 4,
  "downvotes": 0,
  "color": "#1068bf"
}

에픽 삭제#

그룹에서 지정한 에픽을 삭제합니다.

에픽을 삭제해도 하위 에픽은 삭제되지 않습니다. 하위 에픽은 삭제된 에픽에서 분리됩니다.

Warning

GitLab 16.10 및 그 이전 버전에서는 에픽을 삭제하면 모든 하위 에픽과 그 하위 항목까지 함께 삭제되었습니다. 필요하다면 에픽을 삭제하기 전에 상위 에픽에서 하위 에픽을 분리합니다. 자세한 내용은 이슈 452189를 참고합니다.

DELETE /groups/:id/epics/:epic_iid
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
epic_iid integer or string 예 에픽의 내부 ID 입니다.
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics/5"

에픽에 할 일 항목 생성#

지정한 에픽에 현재 사용자의 할 일 항목을 생성합니다. 해당 에픽에 이미 사용자의 할 일 항목이 있으면 상태 코드 304가 반환됩니다.

POST /groups/:id/epics/:epic_iid/todo
속성 유형 필수 여부 설명
id integer or string 예 그룹의 ID 또는 URL 인코딩된 경로
epic_iid integer 예 그룹 에픽의 내부 ID
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/1/epics/5/todo"

응답 예시:

{
  "id": 112,
  "group": {
    "id": 1,
    "name": "Gitlab",
    "path": "gitlab",
    "kind": "group",
    "full_path": "base/gitlab",
    "parent_id": null
  },
  "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": "epic",
  "target": {
    "id": 30,
    "iid": 5,
    "group_id": 1,
    "title": "Ea cupiditate dolores ut vero consequatur quasi veniam voluptatem et non.",
    "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
    "author":{
      "id": 7,
      "name": "Pamella Huel",
      "username": "arnita",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/a2f5c6fcef64c9c69cb8779cb292be1b?s=80&d=identicon",
      "web_url": "http://gitlab.example.com/arnita"
    },
    "web_url": "http://gitlab.example.com/groups/test/-/epics/5",
    "reference": "&5",
    "references": {
      "short": "&5",
      "relative": "&5",
      "full": "test&5"
    },
    "start_date": null,
    "end_date": null,
    "created_at": "2018-01-21T06:21:13.165Z",
    "updated_at": "2018-01-22T12:41:41.166Z",
    "closed_at": "2018-08-18T12:22:05.239Z"
  },
  "target_url": "https://gitlab.example.com/groups/epics/5",
  "body": "Vel voluptas atque dicta mollitia adipisci qui at.",
  "state": "pending",
  "created_at": "2016-07-01T11:09:13.992Z"
}