연결된 에픽 API
Tier: Ultimate
Offering: GitLab.com, Self-managed, GitLab Dedicated
- GitLab 14.9에 소개되었으며 기본으로 활성화된
related_epics_widget
이라는 플래그를 사용합니다.- GitLab 15.0에서 피처 플래그
related_epics_widget
이 제거되었습니다.
에픽 REST API는 GitLab 17.0에서 폐지 예정이며 API의 v5에서 제거 예정입니다.
GitLab 17.4 이상에서 관리자가 에픽의 새로운 모습을 활성화한 경우 Work Items API를 사용하세요.
이 변경은 파급 효과가 있습니다.
만약 연관된 에픽 기능이 GitLab 계획에서 제공되지 않는 경우 403
상태 코드가 반환됩니다.
그룹에서 연결된 에픽 링크 목록
주어진 그룹의 권한에 따라 필터링된 그룹 및 서브 그룹의 연결된 에픽 링크 목록을 가져옵니다.
사용자는 연결된 에픽 링크에 액세스하려면 source_epic
및 target_epic
에 액세스할 수 있어야 합니다.
GET /groups/:id/related_epic_links
지원되는 속성:
속성 | 유형 | 필수 | 설명도 |
---|---|---|---|
id
| integer/string | Yes | 그룹의 ID 또는 URL 인코딩된 경로 |
created_after
| string | no | 지정된 시간 이후에 생성된 연결된 에픽 링크를 반환합니다. 형식: ISO 8601(YYYY-MM-DDTHH:MM:SSZ )
|
created_before
| string | no | 지정된 시간 이전에 생성된 연결된 에픽 링크를 반환합니다. 형식: ISO 8601(YYYY-MM-DDTHH:MM:SSZ )
|
updated_after
| string | no | 지정된 시간 이후에 업데이트된 연결된 에픽 링크를 반환합니다. 형식: ISO 8601(YYYY-MM-DDTHH:MM:SSZ )
|
updated_before
| string | no | 지정된 시간 이전에 업데이트된 연결된 에픽 링크를 반환합니다. 형식: ISO 8601(YYYY-MM-DDTHH:MM:SSZ )
|
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/related_epic_links"
예시 응답:
[
{
"id": 1,
"created_at": "2022-01-31T15:10:44.988Z",
"updated_at": "2022-01-31T15:10:44.988Z",
"link_type": "relates_to",
"source_epic": {
"id": 21,
"iid": 1,
"color": "#1068bf",
"text_color": "#FFFFFF",
"group_id": 26,
"parent_id": null,
"parent_iid": null,
"title": "Aspernatur recusandae distinctio omnis et qui est iste.",
"description": "some description",
"confidential": false,
"author": {
"id": 15,
"username": "trina",
"name": "Theresia Robel",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/085e28df717e16484cbf6ceca75e9a93?s=80&d=identicon",
"web_url": "http://gitlab.example.com/trina"
},
"start_date": null,
"end_date": null,
"due_date": null,
"state": "opened",
"web_url": "http://gitlab.example.com/groups/flightjs/-/epics/1",
"references": {
"short": "&1",
"relative": "&1",
"full": "flightjs&1"
},
"created_at": "2022-01-31T15:10:44.988Z",
"updated_at": "2022-03-16T09:32:35.712Z",
"closed_at": null,
"labels": [],
"upvotes": 0,
"downvotes": 0,
"_links": {
"self": "http://gitlab.example.com/api/v4/groups/26/epics/1",
"epic_issues": "http://gitlab.example.com/api/v4/groups/26/epics/1/issues",
"group": "http://gitlab.example.com/api/v4/groups/26",
"parent": null
}
},
"target_epic": {
"id": 25,
"iid": 5,
"color": "#1068bf",
"text_color": "#FFFFFF",
"group_id": 26,
"parent_id": null,
"parent_iid": null,
"title": "Aut assumenda id nihil distinctio fugiat vel numquam est.",
"description": "some description",
"confidential": false,
"author": {
"id": 3,
"username": "valerie",
"name": "Erika Wolf",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/9ef7666abb101418a4716a8ed4dded80?s=80&d=identicon",
"web_url": "http://gitlab.example.com/valerie"
},
"start_date": null,
"end_date": null,
"due_date": null,
"state": "opened",
"web_url": "http://gitlab.example.com/groups/flightjs/-/epics/5",
"references": {
"short": "&5",
"relative": "&5",
"full": "flightjs&5"
},
"created_at": "2022-01-31T15:10:45.080Z",
"updated_at": "2022-03-16T09:32:35.842Z",
"closed_at": null,
"labels": [],
"upvotes": 0,
"downvotes": 0,
"_links": {
"self": "http://gitlab.example.com/api/v4/groups/26/epics/5",
"epic_issues": "http://gitlab.example.com/api/v4/groups/26/epics/5/issues",
"group": "http://gitlab.example.com/api/v4/groups/26",
"parent": null
}
},
}
]
Epic에서 연결된 이야기 목록
사용자 권한에 따라 필터링된 주어진 Epic의 연결된 Epic 목록을 가져옵니다.
GET /groups/:id/epics/:epic_iid/related_epics
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
epic_iid
| 정수 | 예 | 그룹의 Epic의 내부 ID |
id
| 정수/문자열 | 예 | 그룹의 ID 또는 URL 인코딩된 경로. |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/epics/:epic_iid/related_epics"
예시 응답:
[
{
"id":2,
"iid":2,
"color":"#1068bf",
"text_color":"#FFFFFF",
"group_id":2,
"parent_id":null,
"parent_iid":null,
"title":"내 제목 2",
"description":null,
"confidential":false,
"author":{
"id":3,
"username":"user3",
"name":"Sidney Jones4",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/82797019f038ab535a84c6591e7bc936?s=80u0026d=identicon",
"web_url":"http://localhost/user3"
},
"start_date":null,
"end_date":null,
"due_date":null,
"state":"opened",
"web_url":"http://localhost/groups/group1/-/epics/2",
"references":{
"short":"u00262",
"relative":"u00262",
"full":"group1u00262"
},
"created_at":"2022-03-10T18:35:24.479Z",
"updated_at":"2022-03-10T18:35:24.479Z",
"closed_at":null,
"labels":[
],
"upvotes":0,
"downvotes":0,
"_links":{
"self":"http://localhost/api/v4/groups/2/epics/2",
"epic_issues":"http://localhost/api/v4/groups/2/epics/2/issues",
"group":"http://localhost/api/v4/groups/2",
"parent":null
},
"related_epic_link_id":1,
"link_type":"relates_to",
"link_created_at":"2022-03-10T18:35:24.496+00:00",
"link_updated_at":"2022-03-10T18:35:24.496+00:00"
}
]
관련 Epic 링크 작성
- GitLab 15.8에서 그룹의 최소 필수 권한이 보고자에서 게스트로 변경되었습니다.
두 개의 Epic 간의 양방향 관계를 만듭니다. 사용자는 두 그룹 모두에 대해 최소한 게스트 역할을 가져야 합니다.
POST /groups/:id/epics/:epic_iid/related_epics
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
epic_iid
| 정수 | 예 | 그룹의 Epic의 내부 ID. |
id
| 정수/문자열 | 예 | 그룹의 ID 또는 URL-encoded path of the group. |
target_epic_iid
| 정수/문자열 | 예 | 대상 그룹의 Epic의 내부 ID. |
target_group_id
| 정수/문자열 | 예 | 대상 그룹의 ID 또는 URL-encoded path of the target group. |
link_type
| 문자열 | 아니요 | 관계의 유형 (relates_to , blocks , is_blocked_by ), 기본값은 relates_to .
|
예시 요청:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/26/epics/1/related_epics?target_group_id=26&target_epic_iid=5"
예시 응답:
{
"id": 1,
"created_at": "2022-01-31T15:10:44.988Z",
"updated_at": "2022-01-31T15:10:44.988Z",
"link_type": "relates_to",
"source_epic": {
"id": 21,
"iid": 1,
"color": "#1068bf",
"text_color": "#FFFFFF",
"group_id": 26,
"parent_id": null,
"parent_iid": null,
"title": "Aspernatur recusandae distinctio omnis et qui est iste.",
"description": "some description",
"confidential": false,
"author": {
"id": 15,
"username": "trina",
"name": "Theresia Robel",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/085e28df717e16484cbf6ceca75e9a93?s=80&d=identicon",
"web_url": "http://gitlab.example.com/trina"
},
"start_date": null,
"end_date": null,
"due_date": null,
"state": "opened",
"web_url": "http://gitlab.example.com/groups/flightjs/-/epics/1",
"references": {
"short": "&1",
"relative": "&1",
"full": "flightjs&1"
},
"created_at": "2022-01-31T15:10:44.988Z",
"updated_at": "2022-03-16T09:32:35.712Z",
"closed_at": null,
"labels": [],
"upvotes": 0,
"downvotes": 0,
"_links": {
"self": "http://gitlab.example.com/api/v4/groups/26/epics/1",
"epic_issues": "http://gitlab.example.com/api/v4/groups/26/epics/1/issues",
"group": "http://gitlab.example.com/api/v4/groups/26",
"parent": null
}
},
"target_epic": {
"id": 25,
"iid": 5,
"color": "#1068bf",
"text_color": "#FFFFFF",
"group_id": 26,
"parent_id": null,
"parent_iid": null,
"title": "Aut assumenda id nihil distinctio fugiat vel numquam est.",
"description": "some description",
"confidential": false,
"author": {
"id": 3,
"username": "valerie",
"name": "Erika Wolf",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/9ef7666abb101418a4716a8ed4dded80?s=80&d=identicon",
"web_url": "http://gitlab.example.com/valerie"
},
"start_date": null,
"end_date": null,
"due_date": null,
"state": "opened",
"web_url": "http://gitlab.example.com/groups/flightjs/-/epics/5",
"references": {
"short": "&5",
"relative": "&5",
"full": "flightjs&5"
},
"created_at": "2022-01-31T15:10:45.080Z",
"updated_at": "2022-03-16T09:32:35.842Z",
"closed_at": null,
"labels": [],
"upvotes": 0,
"downvotes": 0,
"_links": {
"self": "http://gitlab.example.com/api/v4/groups/26/epics/5",
"epic_issues": "http://gitlab.example.com/api/v4/groups/26/epics/5/issues",
"group": "http://gitlab.example.com/api/v4/groups/26",
"parent": null
}
}
}
관련된 에픽 링크 삭제
- 그룹 내에서 필요한 최소 권한을 변경하여 GitLab 15.8에서 보고자에서 손님으로 변경되었습니다.
두 개의 에픽 간 양방향 관계를 삭제합니다. 사용자는 두 그룹 모두에 대해 최소한 손님 역할을 가져야 합니다.
DELETE /groups/:id/epics/:epic_iid/related_epics/:related_epic_link_id
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
epic_iid
| 정수 | 예 | 그룹의 에픽의 내부 ID. |
id
| 정수/문자열 | 예 | 그룹의 ID 또는 URL로 인코딩된 경로. |
related_epic_link_id
| 정수/문자열 | 예 | 관련된 에픽 링크의 내부 ID. |
예시 요청:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/26/epics/1/related_epics/1"
예시 응답:
{
"id": 1,
"created_at": "2022-01-31T15:10:44.988Z",
"updated_at": "2022-01-31T15:10:44.988Z",
"link_type": "relates_to",
"source_epic": {
"id": 21,
"iid": 1,
"color": "#1068bf",
"text_color": "#FFFFFF",
"group_id": 26,
"parent_id": null,
"parent_iid": null,
"title": "Aspernatur recusandae distinctio omnis et qui est iste.",
"description": "some description",
"confidential": false,
"author": {
"id": 15,
"username": "trina",
"name": "Theresia Robel",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/085e28df717e16484cbf6ceca75e9a93?s=80&d=identicon",
"web_url": "http://gitlab.example.com/trina"
},
"start_date": null,
"end_date": null,
"due_date": null,
"state": "opened",
"web_url": "http://gitlab.example.com/groups/flightjs/-/epics/1",
"references": {
"short": "&1",
"relative": "&1",
"full": "flightjs&1"
},
"created_at": "2022-01-31T15:10:44.988Z",
"updated_at": "2022-03-16T09:32:35.712Z",
"closed_at": null,
"labels": [],
"upvotes": 0,
"downvotes": 0,
"_links": {
"self": "http://gitlab.example.com/api/v4/groups/26/epics/1",
"epic_issues": "http://gitlab.example.com/api/v4/groups/26/epics/1/issues",
"group": "http://gitlab.example.com/api/v4/groups/26",
"parent": null
}
},
"target_epic": {
"id": 25,
"iid": 5,
"color": "#1068bf",
"text_color": "#FFFFFF",
"group_id": 26,
"parent_id": null,
"parent_iid": null,
"title": "Aut assumenda id nihil distinctio fugiat vel numquam est.",
"description": "some description",
"confidential": false,
"author": {
"id": 3,
"username": "valerie",
"name": "Erika Wolf",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/9ef7666abb101418a4716a8ed4dded80?s=80&d=identicon",
"web_url": "http://gitlab.example.com/valerie"
},
"start_date": null,
"end_date": null,
"due_date": null,
"state": "opened",
"web_url": "http://gitlab.example.com/groups/flightjs/-/epics/5",
"references": {
"short": "&5",
"relative": "&5",
"full": "flightjs&5"
},
"created_at": "2022-01-31T15:10:45.080Z",
"updated_at": "2022-03-16T09:32:35.842Z",
"closed_at": null,
"labels": [],
"upvotes": 0,
"downvotes": 0,
"_links": {
"self": "http://gitlab.example.com/api/v4/groups/26/epics/5",
"epic_issues": "http://gitlab.example.com/api/v4/groups/26/epics/5/issues",
"group": "http://gitlab.example.com/api/v4/groups/26",
"parent": null
}
}
}