{{< details >}}
- Tier: 旗舰版
- Offering: JihuLab.com, 私有化部署
{{< /details >}}
{{< alert type=”warning” >}}
极狐GitLab 17.0 中史诗 REST API 已被弃用,并计划在 API 的 v5 中移除。在极狐GitLab 17.4 或更高版本中,如果启用了史诗的新外观,请改用工作项 API。有关更多信息,请参阅如何迁移现有 API 的指南。此更改是一个重大更改。
{{< /alert >}}
管理父子 史诗关系。
每次对 epic_links
的 API 调用都必须经过认证。
如果用户不是一个私有群组的成员,则对该群组进行 GET
请求会导致返回 404
状态码。
多级史诗仅在 极狐GitLab 旗舰版 中可用。如果多级史诗功能不可用,则返回 403
状态码。
列出与指定史诗相关的史诗
获取某个史诗的所有子史诗。
GET /groups/:id/epics/:epic_iid/epics
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 群组的 ID 或 URL 编码路径 |
epic_iid |
integer | 是 | 史诗的内部 ID。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/5/epics/"
示例响应:
[
{
"id": 29,
"iid": 6,
"group_id": 1,
"parent_id": 5,
"title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
"description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
"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://localhost:3001/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",
"labels": []
}
]
指派一个子史诗
在两个史诗之间创建一个关联,将一个设定为父史诗,另一个设定为子史诗。一个父史诗可以有多个子史诗。如果新的子史诗已经属于另一个史诗,它将从之前的父史诗中取消分配。
POST /groups/:id/epics/:epic_iid/epics/:child_epic_id
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 群组的 ID 或 URL 编码路径 |
epic_iid |
integer | 是 | 史诗的内部 ID。 |
child_epic_id |
integer | 是 | 子史诗的全局 ID。内部 ID 不能使用,因为它们可能与其他群组的史诗冲突。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/5/epics/6"
示例响应:
{
"id": 6,
"iid": 38,
"group_id": 1,
"parent_id": 5,
"title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
"description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
"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://localhost:3001/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",
"labels": []
}
创建并指派一个子史诗
创建一个新的史诗并与提供的父史诗关联。响应是 LinkedEpic 对象。
POST /groups/:id/epics/:epic_iid/epics
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 群组的 ID 或 URL 编码路径 |
epic_iid |
integer | 是 | (未来父)史诗的内部 ID。 |
title |
string | 是 | 新创建的史诗的标题。 |
confidential |
boolean | 否 | 史诗是否应该保密。如果 confidential_epics 特性标志被禁用,则参数被忽略。默认情况下与父史诗的保密状态一致。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/5/epics?title=Newpic"
示例响应:
{
"id": 24,
"iid": 2,
"title": "child epic",
"group_id": 49,
"parent_id": 23,
"has_children": false,
"has_issues": false,
"reference": "&2",
"url": "http://localhost/groups/group16/-/epics/2",
"relation_url": "http://localhost/groups/group16/-/epics/1/links/24"
}
重新排序子史诗
PUT /groups/:id/epics/:epic_iid/epics/:child_epic_id
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 群组的 ID 或 URL 编码路径 |
epic_iid |
integer | 是 | 史诗的内部 ID。 |
child_epic_id |
integer | 是 | 子史诗的全局 ID。内部 ID 不能使用,因为它们可能与其他群组的史诗冲突。 |
move_before_id |
integer | 否 | 应该放置在子史诗之前的兄弟史诗的全局 ID。 |
move_after_id |
integer | 否 | 应该放置在子史诗之后的兄弟史诗的全局 ID。 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/4/epics/5"
示例响应:
[
{
"id": 29,
"iid": 6,
"group_id": 1,
"parent_id": 5,
"title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
"description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
"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://localhost:3001/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",
"labels": []
}
]
取消指派子史诗
从父史诗中取消指派一个子史诗。
DELETE /groups/:id/epics/:epic_iid/epics/:child_epic_id
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 群组的 ID 或 URL 编码路径 |
epic_iid |
integer | 是 | 史诗的内部 ID。 |
child_epic_id |
integer | 是 | 子史诗的全局 ID。内部 ID 不能使用,因为它们可能与其他群组的史诗冲突。 |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/4/epics/5"
示例响应:
{
"id": 5,
"iid": 38,
"group_id": 1,
"parent_id": null,
"title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
"description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
"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://localhost:3001/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",
"labels": []
}