多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Epic Issues API > 原文:[https://docs.gitlab.com/ee/api/epic_issues.html](https://docs.gitlab.com/ee/api/epic_issues.html) * [List issues for an epic](#list-issues-for-an-epic) * [Assign an issue to the epic](#assign-an-issue-to-the-epic) * [Remove an issue from the epic](#remove-an-issue-from-the-epic) * [Update epic - issue association](#update-epic---issue-association) # Epic Issues API[](#epic-issues-api-premium "Permalink") 每个对 epic_issues 的 API 调用都必须经过验证. 如果用户不是组的成员,并且该组是私有的,则对该组的`GET`请求将产生`404`状态代码. Epics 仅在 GitLab [Premium 和更高版本](https://about.gitlab.com/pricing/)中可用. 如果 Epics 功能不可用,将返回`403`状态代码. ## List issues for an epic[](#list-issues-for-an-epic "Permalink") 获取分配给史诗且经过身份验证的用户有权访问的所有问题. ``` GET /groups/:id/epics/:epic_iid/issues ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 认证用户拥有[的组](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) | | `epic_iid` | integer/string | yes | 史诗的内部 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" }, "subscribed": true, "epic_issue_id": 2 } ] ``` **注意** :不建议使用`assignee`列,现在我们将其显示为符合 GitLab EE API 的单一大小的数组`assignees` . ## Assign an issue to the epic[](#assign-an-issue-to-the-epic "Permalink") 创建史诗-事件关联. 如果所讨论的问题属于另一个史诗,则不会从该史诗中分配该问题. ``` POST /groups/:id/epics/:epic_iid/issues/:issue_id ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 认证用户拥有[的组](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) | | `epic_iid` | integer/string | yes | 史诗的内部 ID. | | `issue_id` | integer/string | yes | 问题的 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` . ## Remove an issue from the epic[](#remove-an-issue-from-the-epic "Permalink") 删除史诗-问题关联. ``` DELETE /groups/:id/epics/:epic_iid/issues/:epic_issue_id ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 认证用户拥有[的组](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) | | `epic_iid` | integer/string | yes | 史诗的内部 ID. | | `epic_issue_id` | integer/string | yes | 问题的 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 } } } ``` **Note**: `assignee` column is deprecated, now we show it as a single-sized array `assignees` to conform to the GitLab EE API. ## Update epic - issue association[](#update-epic---issue-association "Permalink") 更新史诗-问题关联. ``` PUT /groups/:id/epics/:epic_iid/issues/:epic_issue_id ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 认证用户拥有[的组](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) | | `epic_iid` | integer/string | yes | 史诗的内部 ID. | | `epic_issue_id` | integer/string | yes | 问题的 ID-史诗般的协会. | | `move_before_id` | integer/string | no | 问题的 ID-史诗般的关联,应放在问题中的链接之前. | | `move_after_id` | integer/string | no | 问题的 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 } ] ```