에픽 이슈 API

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
caution
에픽 REST API는 더 이상 사용되지 않음으로 지정되어 있으며, API의 v5에서 제거될 예정입니다.
GitLab 17.4 이상에서는 관리자가 에픽의 새로운 모양을 활성화한 경우, 대신
작업 항목 API를 사용하세요.
이 변경은 Breaking Change입니다.

에픽 이슈 API 엔드포인트에 대한 모든 API 호출은 인증이 필요합니다.

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

에픽은 GitLab Premium 및 Ultimate에서만 사용할 수 있습니다.
에픽 기능이 제공되지 않을 경우, 403 상태 코드가 반환됩니다.

에픽 이슈 페이지네이션

API 결과는 페이지네이션됩니다. 여러 이슈를 반환하는 요청은 기본적으로 한 번에 20개의 결과를 반환합니다.

에픽에 대한 이슈 목록

에픽에 할당된 모든 이슈를 가져오며, 인증된 사용자가 접근할 수 있습니다.

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

예시 응답:

[  
  {  
    "id": 76,  
    "iid": 6,  
    "project_id": 8,  
    "title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",  
    "description" : "Ratione dolores corrupti mollitia soluta quia.",  
    "state": "opened",  
    "created_at": "2017-11-15T13:39:24.670Z",  
    "updated_at": "2018-01-04T10:49:19.506Z",  
    "closed_at": null,  
    "labels": [],  
    "milestone": {  
      "id": 38,  
      "iid": 3,  
      "project_id": 8,  
      "title": "v2.0",  
      "description": "In tempore culpa inventore quo accusantium.",  
      "state": "closed",  
      "created_at": "2017-11-15T13:39:13.825Z",  
      "updated_at": "2017-11-15T13:39:13.825Z",  
      "due_date": null,  
      "start_date": null  
    },  
    "assignees": [{  
      "id": 7,  
      "name": "Pamella Huel",  
      "username": "arnita",  
      "state": "active",  
      "avatar_url": "http://www.gravatar.com/avatar/a2f5c6fcef64c9c69cb8779cb292be1b?s=80&d=identicon",  
      "web_url": "http://localhost:3001/arnita"  
    }],  
    "assignee": {  
      "id": 7,  
      "name": "Pamella Huel",  
      "username": "arnita",  
      "state": "active",  
      "avatar_url": "http://www.gravatar.com/avatar/a2f5c6fcef64c9c69cb8779cb292be1b?s=80&d=identicon",  
      "web_url": "http://localhost:3001/arnita"  
    },  
    "author": {  
      "id": 13,  
      "name": "Michell Johns",  
      "username": "chris_hahn",  
      "state": "active",  
      "avatar_url": "http://www.gravatar.com/avatar/30e3b2122ccd6b8e45e8e14a3ffb58fc?s=80&d=identicon",  
      "web_url": "http://localhost:3001/chris_hahn"  
    },  
    "user_notes_count": 8,  
    "upvotes": 0,  
    "downvotes": 0,  
    "due_date": null,  
    "confidential": false,  
    "weight": null,  
    "discussion_locked": null,  
    "web_url": "http://localhost:3001/h5bp/html5-boilerplate/issues/6",  
    "time_stats": {  
      "time_estimate": 0,  
      "total_time_spent": 0,  
      "human_time_estimate": null,  
      "human_total_time_spent": null  
    },  
    "_links": {  
      "self": "http://localhost:3001/api/v4/projects/8/issues/6",  
      "notes": "http://localhost:3001/api/v4/projects/8/issues/6/notes",  
      "award_emoji": "http://localhost:3001/api/v4/projects/8/issues/6/award_emoji",  
      "project": "http://localhost:3001/api/v4/projects/8"  
    },  
    "epic_issue_id": 2  
  }  
]  

참고: assignee 열은 더 이상 사용되지 않으며, 이제 GitLab EE API에 맞게 단일 크기의 배열 assignees로 표시됩니다.

에픽에 이슈 할당하기

에픽 - 이슈 연결을 생성합니다. 해당 이슈가 다른 에픽에 속한 경우, 해당 에픽에서 할당이 해제됩니다.

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

응답 예시:

{
  "id": 11,
  "epic": {
    "id": 30,
    "iid": 5,
    "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://localhost:3001/arnita"
    },
    "start_date": null,
    "end_date": null
  },
  "issue": {
    "id": 55,
    "iid": 13,
    "project_id": 8,
    "title": "Beatae laborum voluptatem voluptate eligendi ex accusamus.",
    "description": "Quam veritatis debitis omnis aliquam sit.",
    "state": "opened",
    "created_at": "2017-11-05T13:59:12.782Z",
    "updated_at": "2018-01-05T10:33:03.900Z",
    "closed_at": null,
    "labels": [],
    "milestone": {
      "id": 48,
      "iid": 6,
      "project_id": 8,
      "title": "Sprint - Sed sed maxime temporibus ipsa ullam qui sit.",
      "description": "Quos veritatis qui expedita sunt deleniti accusamus.",
      "state": "active",
      "created_at": "2017-11-05T13:59:12.445Z",
      "updated_at": "2017-11-05T13:59:12.445Z",
      "due_date": "2017-11-13",
      "start_date": "2017-11-05"
    },
    "assignees": [{
      "id": 10,
      "name": "Lu Mayer",
      "username": "kam",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/018729e129a6f31c80a6327a30196823?s=80&d=identicon",
      "web_url": "http://localhost:3001/kam"
    }],
    "assignee": {
      "id": 10,
      "name": "Lu Mayer",
      "username": "kam",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/018729e129a6f31c80a6327a30196823?s=80&d=identicon",
      "web_url": "http://localhost:3001/kam"
    },
    "author": {
      "id": 25,
      "name": "User 3",
      "username": "user3",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/97d6d9441ff85fdc730e02a6068d267b?s=80&d=identicon",
      "web_url": "http://localhost:3001/user3"
    },
    "user_notes_count": 0,
    "upvotes": 0,
    "downvotes": 0,
    "due_date": null,
    "confidential": false,
    "weight": null,
    "discussion_locked": null,
    "web_url": "http://localhost:3001/h5bp/html5-boilerplate/issues/13",
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    }
  }
}

참고: assignee 열은 더 이상 사용되지 않으며, 현재 GitLab EE API에 맞게 단일 크기의 배열 assignees로 표시됩니다.

에픽에서 이슈 제거

에픽 - 이슈 관계를 제거합니다.

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

예시 응답:

{
  "id": 11,
  "epic": {
    "id": 30,
    "iid": 5,
    "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://localhost:3001/arnita"
    },
    "start_date": null,
    "end_date": null
  },
  "issue": {
    "id": 223,
    "iid": 13,
    "project_id": 8,
    "title": "Beatae laborum voluptatem voluptate eligendi ex accusamus.",
    "description": "Quam veritatis debitis omnis aliquam sit.",
    "state": "opened",
    "created_at": "2017-11-05T13:59:12.782Z",
    "updated_at": "2018-01-05T10:33:03.900Z",
    "closed_at": null,
    "labels": [],
    "milestone": {
      "id": 48,
      "iid": 6,
      "project_id": 8,
      "title": "Sprint - Sed sed maxime temporibus ipsa ullam qui sit.",
      "description": "Quos veritatis qui expedita sunt deleniti accusamus.",
      "state": "active",
      "created_at": "2017-11-05T13:59:12.445Z",
      "updated_at": "2017-11-05T13:59:12.445Z",
      "due_date": "2017-11-13",
      "start_date": "2017-11-05"
    },
    "assignees": [{
      "id": 10,
      "name": "Lu Mayer",
      "username": "kam",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/018729e129a6f31c80a6327a30196823?s=80&d=identicon",
      "web_url": "http://localhost:3001/kam"
    }],
    "assignee": {
      "id": 10,
      "name": "Lu Mayer",
      "username": "kam",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/018729e129a6f31c80a6327a30196823?s=80&d=identicon",
      "web_url": "http://localhost:3001/kam"
    },
    "author": {
      "id": 25,
      "name": "User 3",
      "username": "user3",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/97d6d9441ff85fdc730e02a6068d267b?s=80&d=identicon",
      "web_url": "http://localhost:3001/user3"
    },
    "user_notes_count": 0,
    "upvotes": 0,
    "downvotes": 0,
    "due_date": null,
    "confidential": false,
    "weight": null,
    "discussion_locked": null,
    "web_url": "http://localhost:3001/h5bp/html5-boilerplate/issues/13",
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    }
  }
}

참고: assignee 열은 더 이상 사용되지 않으며, 이제 GitLab EE API에 맞게 단일 크기 배열 assignees로 표시됩니다.

에픽 - 이슈 연결 업데이트

에픽 - 이슈 연결을 업데이트합니다.

PUT /groups/:id/epics/:epic_iid/issues/:epic_issue_id
속성 유형 필수 설명
id integer/string 그룹의 ID 또는 URL 인코딩 경로
epic_iid integer/string 에픽의 내부 ID.
epic_issue_id integer/string 이슈 - 에픽 연결의 ID.
move_before_id integer/string 아니오 링크 앞에 배치해야 하는 이슈 - 에픽 연결의 ID.
move_after_id integer/string 아니오 링크 뒤에 배치해야 하는 이슈 - 에픽 연결의 ID.
curl --header PUT "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/5/issues/11?move_before_id=20"

응답 예시:

[
  {
    "id": 30,
    "iid": 6,
    "project_id": 8,
    "title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
    "description" : "Ratione dolores corrupti mollitia soluta quia.",
    "state": "opened",
    "created_at": "2017-11-15T13:39:24.670Z",
    "updated_at": "2018-01-04T10:49:19.506Z",
    "closed_at": null,
    "labels": [],
    "milestone": {
      "id": 38,
      "iid": 3,
      "project_id": 8,
      "title": "v2.0",
      "description": "In tempore culpa inventore quo accusantium.",
      "state": "closed",
      "created_at": "2017-11-15T13:39:13.825Z",
      "updated_at": "2017-11-15T13:39:13.825Z",
      "due_date": null,
      "start_date": null
    },
    "assignees": [{
      "id": 7,
      "name": "Pamella Huel",
      "username": "arnita",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/a2f5c6fcef64c9c69cb8779cb292be1b?s=80&d=identicon",
      "web_url": "http://localhost:3001/arnita"
    }],
    "assignee": {
      "id": 7,
      "name": "Pamella Huel",
      "username": "arnita",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/a2f5c6fcef64c9c69cb8779cb292be1b?s=80&d=identicon",
      "web_url": "http://localhost:3001/arnita"
    },
    "author": {
      "id": 13,
      "name": "Michell Johns",
      "username": "chris_hahn",
      "state": "active",
      "avatar_url": "http://www.gravatar.com/avatar/30e3b2122ccd6b8e45e8e14a3ffb58fc?s=80&d=identicon",
      "web_url": "http://localhost:3001/chris_hahn"
    },
    "user_notes_count": 8,
    "upvotes": 0,
    "downvotes": 0,
    "due_date": null,
    "confidential": false,
    "weight": null,
    "discussion_locked": null,
    "web_url": "http://localhost:3001/h5bp/html5-boilerplate/issues/6",
    "time_stats": {
      "time_estimate": 0,
      "total_time_spent": 0,
      "human_time_estimate": null,
      "human_total_time_spent": null
    },
    "_links":{
      "self": "http://localhost:3001/api/v4/projects/8/issues/6",
      "notes": "http://localhost:3001/api/v4/projects/8/issues/6/notes",
      "award_emoji": "http://localhost:3001/api/v4/projects/8/issues/6/award_emoji",
      "project": "http://localhost:3001/api/v4/projects/8"
    },
    "subscribed": true,
    "epic_issue_id": 11,
    "relative_position": 55
  }
]