# Todos API

> 原文：[https://docs.gitlab.com/ee/api/todos.html](https://docs.gitlab.com/ee/api/todos.html)

*   [Get a list of todos](#get-a-list-of-todos)
*   [Mark a todo as done](#mark-a-todo-as-done)
*   [Mark all todos as done](#mark-all-todos-as-done)

# Todos API[](#todos-api "Permalink")

在 GitLab 8.10 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3188) .

## Get a list of todos[](#get-a-list-of-todos "Permalink")

返回待办事项列表. 如果未应用任何过滤器，它将返回当前用户的所有待处理的待办事项. 不同的过滤器使用户可以精确地处理请求.

```
GET /todos 
```

Parameters:

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `action` | string | no | 要过滤的动作. 可以`assigned` ， `mentioned` ， `build_failed` ， `marked` ， `approval_required` ， `unmergeable`或`directly_addressed` `unmergeable` . |
| `author_id` | integer | no | 作者的 ID |
| `project_id` | integer | no | 项目 ID |
| `group_id` | integer | no | 组的 ID |
| `state` | string | no | 待办事项的状态. 可以`pending`或`done` |
| `type` | string | no | 待办事项的类型. 可以是`Issue`或`MergeRequest` |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/todos" 
```

示例响应：

```
[  {  "id":  102,  "project":  {  "id":  2,  "name":  "Gitlab Ce",  "name_with_namespace":  "Gitlab Org / Gitlab Ce",  "path":  "gitlab-foss",  "path_with_namespace":  "gitlab-org/gitlab-foss"  },  "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":  "MergeRequest",  "target":  {  "id":  34,  "iid":  7,  "project_id":  2,  "title":  "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",  "description":  "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",  "state":  "opened",  "created_at":  "2016-06-17T07:49:24.419Z",  "updated_at":  "2016-06-17T07:52:43.484Z",  "target_branch":  "tutorials_git_tricks",  "source_branch":  "DNSBL_docs",  "upvotes":  0,  "downvotes":  0,  "author":  {  "name":  "Maxie Medhurst",  "username":  "craig_rutherford",  "id":  12,  "state":  "active",  "avatar_url":  "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",  "web_url":  "https://gitlab.example.com/craig_rutherford"  },  "assignee":  {  "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"  },  "source_project_id":  2,  "target_project_id":  2,  "labels":  [],  "work_in_progress":  false,  "milestone":  {  "id":  32,  "iid":  2,  "project_id":  2,  "title":  "v1.0",  "description":  "Assumenda placeat ea voluptatem voluptate qui.",  "state":  "active",  "created_at":  "2016-06-17T07:47:34.163Z",  "updated_at":  "2016-06-17T07:47:34.163Z",  "due_date":  null  },  "merge_when_pipeline_succeeds":  false,  "merge_status":  "cannot_be_merged",  "subscribed":  true,  "user_notes_count":  7  },  "target_url":  "https://gitlab.example.com/gitlab-org/gitlab-foss/-/merge_requests/7",  "body":  "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",  "state":  "pending",  "created_at":  "2016-06-17T07:52:35.225Z",  "updated_at":  "2016-06-17T07:52:35.225Z"  },  {  "id":  98,  "project":  {  "id":  2,  "name":  "Gitlab Ce",  "name_with_namespace":  "Gitlab Org / Gitlab Ce",  "path":  "gitlab-foss",  "path_with_namespace":  "gitlab-org/gitlab-foss"  },  "author":  {  "name":  "Maxie Medhurst",  "username":  "craig_rutherford",  "id":  12,  "state":  "active",  "avatar_url":  "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",  "web_url":  "https://gitlab.example.com/craig_rutherford"  },  "action_name":  "assigned",  "target_type":  "MergeRequest",  "target":  {  "id":  34,  "iid":  7,  "project_id":  2,  "title":  "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",  "description":  "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",  "state":  "opened",  "created_at":  "2016-06-17T07:49:24.419Z",  "updated_at":  "2016-06-17T07:52:43.484Z",  "target_branch":  "tutorials_git_tricks",  "source_branch":  "DNSBL_docs",  "upvotes":  0,  "downvotes":  0,  "author":  {  "name":  "Maxie Medhurst",  "username":  "craig_rutherford",  "id":  12,  "state":  "active",  "avatar_url":  "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",  "web_url":  "https://gitlab.example.com/craig_rutherford"  },  "assignee":  {  "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"  },  "source_project_id":  2,  "target_project_id":  2,  "labels":  [],  "work_in_progress":  false,  "milestone":  {  "id":  32,  "iid":  2,  "project_id":  2,  "title":  "v1.0",  "description":  "Assumenda placeat ea voluptatem voluptate qui.",  "state":  "active",  "created_at":  "2016-06-17T07:47:34.163Z",  "updated_at":  "2016-06-17T07:47:34.163Z",  "due_date":  null  },  "merge_when_pipeline_succeeds":  false,  "merge_status":  "cannot_be_merged",  "subscribed":  true,  "user_notes_count":  7  },  "target_url":  "https://gitlab.example.com/gitlab-org/gitlab-foss/-/merge_requests/7",  "body":  "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",  "state":  "pending",  "created_at":  "2016-06-17T07:49:24.624Z",  "updated_at":  "2016-06-17T07:49:24.624Z"  }  ] 
```

## Mark a todo as done[](#mark-a-todo-as-done "Permalink")

将其 ID 给当前用户的单个待处理待办事项标记为已完成. 标记为已完成的待办事项在响应中返回.

```
POST /todos/:id/mark_as_done 
```

Parameters:

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 待办事项编号 |

```
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/todos/130/mark_as_done" 
```

示例响应：

```
{  "id":  102,  "project":  {  "id":  2,  "name":  "Gitlab Ce",  "name_with_namespace":  "Gitlab Org / Gitlab Ce",  "path":  "gitlab-foss",  "path_with_namespace":  "gitlab-org/gitlab-foss"  },  "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":  "MergeRequest",  "target":  {  "id":  34,  "iid":  7,  "project_id":  2,  "title":  "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",  "description":  "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",  "state":  "opened",  "created_at":  "2016-06-17T07:49:24.419Z",  "updated_at":  "2016-06-17T07:52:43.484Z",  "target_branch":  "tutorials_git_tricks",  "source_branch":  "DNSBL_docs",  "upvotes":  0,  "downvotes":  0,  "author":  {  "name":  "Maxie Medhurst",  "username":  "craig_rutherford",  "id":  12,  "state":  "active",  "avatar_url":  "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",  "web_url":  "https://gitlab.example.com/craig_rutherford"  },  "assignee":  {  "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"  },  "source_project_id":  2,  "target_project_id":  2,  "labels":  [],  "work_in_progress":  false,  "milestone":  {  "id":  32,  "iid":  2,  "project_id":  2,  "title":  "v1.0",  "description":  "Assumenda placeat ea voluptatem voluptate qui.",  "state":  "active",  "created_at":  "2016-06-17T07:47:34.163Z",  "updated_at":  "2016-06-17T07:47:34.163Z",  "due_date":  null  },  "merge_when_pipeline_succeeds":  false,  "merge_status":  "cannot_be_merged",  "subscribed":  true,  "user_notes_count":  7  },  "target_url":  "https://gitlab.example.com/gitlab-org/gitlab-foss/-/merge_requests/7",  "body":  "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",  "state":  "done",  "created_at":  "2016-06-17T07:52:35.225Z",  "updated_at":  "2016-06-17T07:52:35.225Z"  } 
```

## Mark all todos as done[](#mark-all-todos-as-done "Permalink")

将当前用户的所有待处理待办事项标记为已完成. 它返回带有空响应的 HTTP 状态代码`204` .

```
POST /todos/mark_as_done 
```

```
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/todos/mark_as_done" 
```