에픽 API (사용 중단)

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
caution
에픽 REST API는 사용 중단되었습니다 GitLab 17.0에서
API의 v5 버전에서 제거될 예정입니다.
GitLab 17.4 이상에서는 관리자가 에픽의 새로운 모양을 활성화한 경우,
대신 작업 항목 API를 사용하세요.
이 변경은 브레이킹 체인지(breaking change)입니다.

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

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

에픽 기능이 사용 불가능하면 403 상태 코드가 반환됩니다.

에픽 이슈 API

에픽 이슈 API는 에픽과 관련된 이슈와 상호작용할 수 있습니다.

마일스톤 날짜 통합

시작일과 마감일은 관련 이슈 마일스톤에서 동적으로 가져올 수 있으므로,
사용자가 편집 권한이 있을 경우 추가 필드가 표시됩니다. 이는 두 개의 불리언 필드 start_date_is_fixeddue_date_is_fixed
네 개의 날짜 필드 start_date_fixed, start_date_from_inherited_source, due_date_fixeddue_date_from_inherited_source를 포함합니다.

  • end_datedue_date를 위해 사용 중단되었습니다.
  • start_date_from_milestonesstart_date_from_inherited_source를 위해 사용 중단되었습니다.
  • due_date_from_milestonesdue_date_from_inherited_source를 위해 사용 중단되었습니다.

에픽 페이지 매김

기본적으로 GET 요청은 API 결과가 페이지로 나뉘어 있기 때문에 한 번에 20개의 결과를 반환합니다.

페이지 매김에 대해 더 알아보세요.

caution
GitLab 12.6 이후,
응답에서 reference 속성은 references를 위해 사용 중단되었습니다.
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 정수/문자열 그룹의 ID 또는 URL 인코딩 경로
author_id 정수 아니오 주어진 사용자 id에 의해 생성된 에픽을 반환합니다.
author_username 문자열 아니오 주어진 username을 가진 사용자가 생성한 에픽을 반환합니다.
labels 문자열 아니오 쉼표로 구분된 라벨 이름의 목록과 일치하는 에픽을 반환합니다. 에픽 그룹 또는 상위 그룹의 라벨 이름을 사용할 수 있습니다.
with_labels_details 불리언 아니오 true인 경우, 응답은 라벨 필드의 각 라벨에 대한 더 많은 세부 정보를 반환합니다: :name, :color, :description, :description_html, :text_color. 기본값은 false입니다.
order_by 문자열 아니오 created_at , updated_at 또는 title 필드에 따라 정렬된 에픽을 반환합니다. 기본값은 created_at입니다.
sort 문자열 아니오 asc 또는 desc 순서로 정렬된 에픽을 반환합니다. 기본값은 desc입니다.
search 문자열 아니오 에픽의 titledescription에 대해 검색합니다.
state 문자열 아니오 에픽의 state에 대해 검색합니다. 가능한 필터: opened, closedall, 기본값: all
created_after 날짜시간 아니오 주어진 시간 이후에 생성된 에픽을 반환합니다. ISO 8601 형식으로 예상됩니다 (2019-03-15T08:00:00Z)
created_before 날짜시간 아니오 주어진 시간 이전에 생성된 에픽을 반환합니다. ISO 8601 형식으로 예상됩니다 (2019-03-15T08:00:00Z)
updated_after 날짜시간 아니오 주어진 시간 이후에 업데이트된 에픽을 반환합니다. ISO 8601 형식으로 예상됩니다 (2019-03-15T08:00:00Z)
updated_before 날짜시간 아니오 주어진 시간 이전에 업데이트된 에픽을 반환합니다. ISO 8601 형식으로 예상됩니다 (2019-03-15T08:00:00Z)
include_ancestor_groups 불리언 아니오 요청된 그룹의 조상으로부터 에픽을 포함합니다. 기본값은 false입니다.
include_descendant_groups 불리언 아니오 요청된 그룹의 자손으로부터 에픽을 포함합니다. 기본값은 true입니다.
my_reaction_emoji 문자열 아니오 인증된 사용자가 응답한 주어진 이모지로 반응한 에픽을 반환합니다. None은 반응이 없는 에픽을 반환하고, Any는 적어도 하나의 반응이 있는 에픽을 반환합니다.
not 해시 아니오 제공된 매개변수와 일치하지 않는 에픽을 반환합니다. 수용: author_id, author_usernamelabels입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics"  

응답 예시:

[  
  {  
  "id": 29,  
  "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,  
  "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 정수/문자열 그룹의 ID 또는 URL 인코딩된 경로
epic_iid 정수/문자열 에픽의 내부 ID입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/5"

예시 응답:

{
  "id": 30,
  "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_dateend_date는 더 이상 직접 할당되지 않아야 하며, 이제 복합 값을 나타냅니다. 대신 *_is_fixed*_fixed 필드를 통해 구성할 수 있습니다.
POST /groups/:id/epics
속성 유형 필수 설명
id 정수/문자열 그룹의 ID 또는 URL-인코딩된 경로
title 문자열 에픽의 제목
labels 문자열 아니요 쉼표로 구분된 레이블 목록
description 문자열 아니요 에픽의 설명. 최대 1,048,576자까지 제한됩니다.
color 문자열 아니요 에픽의 색상. 기본적으로 비활성화된 epic_highlight_color라는 기능 플래그가 뒤에 있습니다.
confidential 불리언 아니요 에픽이 기밀이어야 하는지 여부
created_at 문자열 아니요 에픽이 생성된 날짜. 날짜 시간 문자열, ISO 8601 형식, 예: 2016-03-11T03:45:40Z. 관리자는 관리자 또는 프로젝트/그룹 소유자 권한이 필요합니다.
start_date_is_fixed 불리언 아니요 시작 날짜가 start_date_fixed에서 가져와야 하는지 또는 마일스톤에서 가져와야 하는지 여부
start_date_fixed 문자열 아니요 에픽의 고정 시작 날짜
due_date_is_fixed 불리언 아니요 마감 날짜가 due_date_fixed에서 가져와야 하는지 또는 마일스톤에서 가져와야 하는지 여부
due_date_fixed 문자열 아니요 에픽의 고정 마감 날짜
parent_id 정수/문자열 아니요 부모 에픽의 ID
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics?title=Epic&description=Epic%20description&parent_id=29"

예시 응답:

{
  "id": 33,
  "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 정수/문자열 그룹의 ID 또는 URL 인코딩된 경로
epic_iid 정수/문자열 에픽의 내부 ID
add_labels 문자열 아니오 이슈에 추가할 라벨 이름(쉼표로 구분)
confidential 불리언 아니오 에픽이 비공개여야 하는지 여부
description 문자열 아니오 에픽의 설명입니다. 최대 1,048,576 자로 제한됩니다.
due_date_fixed 문자열 아니오 에픽의 고정 마감일
due_date_is_fixed 불리언 아니오 마감일이 due_date_fixed에서 가져와야 하는지 또는 마일스톤에서 가져와야 하는지 여부
labels 문자열 아니오 이슈에 대한 라벨 이름(쉼표로 구분). 모든 라벨의 할당 취소를 원할 경우 빈 문자열로 설정합니다.
parent_id 정수/문자열 아니오 부모 에픽의 ID
remove_labels 문자열 아니오 이슈에서 제거할 라벨 이름(쉼표로 구분)
start_date_fixed 문자열 아니오 에픽의 고정 시작일
start_date_is_fixed 불리언 아니오 시작일이 start_date_fixed에서 가져와야 하는지 또는 마일스톤에서 가져와야 하는지 여부
state_event 문자열 아니오 에픽의 상태 이벤트입니다. 에픽을 닫으려면 close를, 재개하려면 reopen을 설정합니다.
title 문자열 아니오 에픽의 제목
updated_at 문자열 아니오 에픽이 업데이트된 시간입니다. 날짜 시간 문자열, ISO 8601 형식으로, 예: 2016-03-11T03:45:40Z . 관리자 또는 프로젝트/그룹 소유자 권한이 필요합니다.
color 문자열 아니오 에픽의 색상입니다. 기능 플래그 epic_highlight_color 뒤에 있으며 기본적으로 비활성화되어 있습니다.
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/5?title=New%20Title&parent_id=29"

예시 응답:

{
  "id": 33,
  "iid": 6,
  "group_id": 7,
  "parent_id": 29,
  "parent_iid": 4,
  "title": "New Title",
  "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"
}

에픽 삭제

  • 변경됨 GitLab 16.11에서. GitLab 16.10 및 이전 버전에서는 에픽을 삭제할 경우, 모든 하위 에픽과 그 하위 항목도 함께 삭제됩니다. 필요하다면 에픽을 삭제하기 전에 부모 에픽에서 하위 에픽을 제거할 수 있습니다.

에픽 삭제

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

할 일 항목 생성

현재 사용자에 대해 에픽으로 할 일 항목을 수동으로 생성합니다. 해당 에픽에 대해 사용자에 대한 할 일 항목이 이미 존재하는 경우, 상태 코드 304가 반환됩니다.

POST /groups/:id/epics/:epic_iid/todo
속성 유형 필수 설명
id 정수/문자열 그룹의 ID 또는 URL 인코딩된 경로
epic_iid 정수 그룹 에픽의 내부 ID
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "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"
}