| [Service Desk](user/project/service_desk.md) | A simple way to allow people to create issues in your GitLab instance without needing their own user account. |
| [Service Desk](user/project/service_desk.md) | A simple way to allow people to create issues in your GitLab instance without needing their own user account. |
| [Time Tracking](user/project/time_tracking.md) | Track time spent on issues and merge requests. |
| [Time Tracking](user/project/time_tracking.md) | Track time spent on issues and merge requests. |
| [Todos](user/todos.md) | Keep track of work requiring attention with a chronological list displayed on a simple dashboard. |
| [To-Do List](user/todos.md) | Keep track of work requiring attention with a chronological list displayed on a simple dashboard. |
@@ -159,7 +159,7 @@ The following documentation relates to the DevOps **Create** stage:
...
@@ -159,7 +159,7 @@ The following documentation relates to the DevOps **Create** stage:
| [Issue Analytics](user/group/issues_analytics/index.md)**(PREMIUM)** | Check how many issues were created per month. |
| [Issue Analytics](user/group/issues_analytics/index.md)**(PREMIUM)** | Check how many issues were created per month. |
| [Merge Request Analytics](user/analytics/merge_request_analytics.md)**(PREMIUM)** | Check your throughput productivity - how many merge requests were merged per month. |
| [Merge Request Analytics](user/analytics/merge_request_analytics.md)**(PREMIUM)** | Check your throughput productivity - how many merge requests were merged per month. |
| [Projects](user/project/index.md), including [project access](public_access/public_access.md)<br/>and [settings](user/project/settings/index.md) | Host source code, and control your project's visibility and set configuration. |
| [Projects](user/project/index.md), including [project access](public_access/public_access.md)<br/>and [settings](user/project/settings/index.md) | Host source code, and control your project's visibility and set configuration. |
| [Search through GitLab](user/search/index.md) | Search for issues, merge requests, projects, groups, and todos. |
| [Search through GitLab](user/search/index.md) | Search for issues, merge requests, projects, groups, and to-dos. |
| [Snippets](user/snippets.md) | Snippets allow you to create little bits of code. |
| [Snippets](user/snippets.md) | Snippets allow you to create little bits of code. |
| [Web IDE](user/project/web_ide/index.md) | Edit files within GitLab's user interface. |
| [Web IDE](user/project/web_ide/index.md) | Edit files within GitLab's user interface. |
| [Static Site Editor](user/project/static_site_editor/index.md) | Edit content on static websites. |
| [Static Site Editor](user/project/static_site_editor/index.md) | Edit content on static websites. |
info:To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
info:To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
---
---
# Todos API
# To-dos API
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3188) in GitLab 8.10.
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3188) in GitLab 8.10.
## Get a list of todos
## Get a list of to-dos
Returns a list of todos. When no filter is applied, it returns all pending todos
Returns a list of to-dos. When no filter is applied, it returns all pending to-dos
for the current user. Different filters allow the user to precise the request.
for the current user. Different filters allow the user to precise the request.
```plaintext
```plaintext
...
@@ -25,8 +25,8 @@ Parameters:
...
@@ -25,8 +25,8 @@ Parameters:
| `author_id` | integer | no | The ID of an author |
| `author_id` | integer | no | The ID of an author |
| `project_id` | integer | no | The ID of a project |
| `project_id` | integer | no | The ID of a project |
| `group_id` | integer | no | The ID of a group |
| `group_id` | integer | no | The ID of a group |
| `state` | string | no | The state of the todo. Can be either `pending` or `done` |
| `state` | string | no | The state of the to-do. Can be either `pending` or `done` |
| `type` | string | no | The type of a todo. Can be either `Issue`, `MergeRequest`, `DesignManagement::Design` or `AlertManagement::Alert` |
| `type` | string | no | The type of a to-do. Can be either `Issue`, `MergeRequest`, `DesignManagement::Design` or `AlertManagement::Alert` |
@@ -74,8 +74,8 @@ Below are the changes made between V3 and V4.
...
@@ -74,8 +74,8 @@ Below are the changes made between V3 and V4.
-`POST /projects/:id/trigger/builds` to `POST /projects/:id/trigger/pipeline`
-`POST /projects/:id/trigger/builds` to `POST /projects/:id/trigger/pipeline`
- Require description when creating a new trigger `POST /projects/:id/triggers`
- Require description when creating a new trigger `POST /projects/:id/triggers`
- Simplify project payload exposed on Environment endpoints [!9675](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9675)
- Simplify project payload exposed on Environment endpoints [!9675](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9675)
- API uses merge request `IID`s (internal ID, as in the web UI) rather than `ID`s. This affects the merge requests, award emoji, todos, and time tracking APIs. [!9530](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9530)
- API uses merge request `IID`s (internal ID, as in the web UI) rather than `ID`s. This affects the merge requests, award emoji, to-dos, and time tracking APIs. [!9530](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9530)
- API uses issue `IID`s (internal ID, as in the web UI) rather than `ID`s. This affects the issues, award emoji, todos, and time tracking APIs. [!9530](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9530)
- API uses issue `IID`s (internal ID, as in the web UI) rather than `ID`s. This affects the issues, award emoji, to-dos, and time tracking APIs. [!9530](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9530)
- Change initial page from `0` to `1` on `GET /projects/:id/repository/commits` (like on the rest of the API) [!9679](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9679)
- Change initial page from `0` to `1` on `GET /projects/:id/repository/commits` (like on the rest of the API) [!9679](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9679)
- Return correct `Link` header data for `GET /projects/:id/repository/commits`[!9679](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9679)
- Return correct `Link` header data for `GET /projects/:id/repository/commits`[!9679](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9679)
- Update endpoints for repository files [!9637](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9637)
- Update endpoints for repository files [!9637](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9637)
@@ -175,7 +175,7 @@ guide on how you can add a new custom validator.
...
@@ -175,7 +175,7 @@ guide on how you can add a new custom validator.
validates the parameter value for different cases. Mainly, it checks whether a
validates the parameter value for different cases. Mainly, it checks whether a
path is relative and does it contain `../../` relative traversal using
path is relative and does it contain `../../` relative traversal using
`File::Separator` or not, and whether the path is absolute, for example
`File::Separator` or not, and whether the path is absolute, for example
`/etc/passwd/`. By default, absolute paths are not allowed. However, you can optionally pass in an allowlist for allowed absolute paths in the following way:
`/etc/passwd/`. By default, absolute paths are not allowed. However, you can optionally pass in an allowlist for allowed absolute paths in the following way:
@@ -361,7 +361,7 @@ Here are possible causes and solutions:
...
@@ -361,7 +361,7 @@ Here are possible causes and solutions:
Getting both of these errors at the same time suggests the NameID capitalization provided by the Identity Provider didn't exactly match the previous value for that user.
Getting both of these errors at the same time suggests the NameID capitalization provided by the Identity Provider didn't exactly match the previous value for that user.
This can be prevented by configuring the [NameID](#nameid) to return a consistent value. Fixing this for an individual user involves [unlinking SAML in the GitLab account](#unlinking-accounts), although this will cause group membership and Todos to be lost.
This can be prevented by configuring the [NameID](#nameid) to return a consistent value. Fixing this for an individual user involves [unlinking SAML in the GitLab account](#unlinking-accounts), although this will cause group membership and to-dos to be lost.
### Message: "Request to link SAML account must be authorized"
### Message: "Request to link SAML account must be authorized"
info:To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
info:To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
---
---
# GitLab To-Do List
# GitLab To-Do List **(CORE)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/2817) in GitLab 8.5.
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/2817) in GitLab 8.5.
When you log into GitLab, you normally want to see where you should spend your
When you sign in to GitLab, you normally want to determine where you should
time, take some action, or know what you need to keep an eye on without
spend your time. This can include taking an action, or keeping track of things
a huge pile of e-mail notifications. GitLab is where you do your work,
(without having to read lots of email notifications). Because GitLab is where you
so being able to get started quickly is important.
do your work, being able to get started quickly is important.
Your To-Do List offers a chronological list of items that are waiting for your input, all
Your *To-Do List* offers a chronological list of items waiting for your input
in a simple dashboard.
(known as *to-dos*) in a single dashboard.
![To Do screenshot showing a list of items to check on](img/todos_index.png)
The To-Do List supports tracking [actions](#what-triggers-a-to-do) related to
the following:
You can quickly access your To-Do List by clicking the checkmark icon next to the
- Issues
search bar in the top navigation. If the count is:
- Merge Requests
- Epics **(ULTIMATE)**
- Less than 100, the number in blue is the number of To-Do items.
![to-do screenshot showing a list of items to check on](img/todos_index.png)
- 100 or more, the number displays as 99+. The exact number displays
on the To-Do List.
You can access your To-Do List by clicking the **{task-done}** To-Do List icon
you still have open. Otherwise, the number displays as 99+. The exact number
next to the search bar in the top navigation. If the to-do item count is:
displays on the To-Do List.
-*Less than 100*, the number in blue is the number of to-do items.
-*100 or more*, the number displays as 99+. The exact number displays in the
To-Do List.
![To Do icon](img/todos_icon.png)
![To Do icon](img/todos_icon.png)
## What triggers a To Do
## What triggers a to-do
A To Do appears on your To-Do List when:
A to-do item appears on your To-Do List when:
- An issue or merge request is assigned to you
- An issue or merge request is assigned to you.
- You are `@mentioned` in the description or comment of an:
- You're `@mentioned` in the description or comment of an issue or merge request
- Issue
(or epic **(ULTIMATE)**).
- Merge Request
- Epic **(ULTIMATE)**
- You are `@mentioned` in a comment on a:
- You are `@mentioned` in a comment on a:
- Commit
- Commit
- Design
- Design
- The CI/CD pipeline for your merge request failed
- The CI/CD pipeline for your merge request failed.
- An open merge request becomes unmergeable due to conflict, and one of the following is true:
- An open merge request becomes unmergeable due to conflict, and one of the
- You are the author
following is true:
- You are the user that set it to automatically merge once the pipeline succeeds
- You're the author.
-[Since GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/issues/12136), a merge request
- You're the user that set the merge request to automatically merge after a
is removed from a [merge train](../ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md)
pipeline succeeds.
and you are the user that added it. **(PREMIUM)**
-[Since GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/issues/12136), a
merge request is removed from a
When multiple trigger actions occur for the same user on the same object (for example, an issue)
only the first is displayed as a single to-do on their To-Do List.
and you're the user that added it. **(PREMIUM)**
To-do triggers are not affected by [GitLab Notification Email settings](profile/notifications.md).
When several trigger actions occur for the same user on the same object (for
example, an issue), GitLab displays only the first action as a single to-do
item.
To-do triggers aren't affected by [GitLab notification email settings](profile/notifications.md).
NOTE: **Note:**
NOTE: **Note:**
When a user no longer has access to a resource related to a To Do (like an issue, merge request,
When a user no longer has access to a resource related to a to-do (such as an
project, or group) the related To-Do items are deleted within the next hour for security reasons.
issue, merge request, project, or group), for security reasons GitLab deletes
The delete is delayed to prevent data loss, in case the user's access was revoked by mistake.
any related to-do items within the next hour. Deletion is delayed to prevent
data loss, in the case where a user's access is accidentally revoked.
### Directly addressing a To Do
### Directly addressing a to-do
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/7926) in GitLab 9.0.
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/7926) in GitLab 9.0.
If you are mentioned at the start of a line, the To Do you receive will be listed
If you're mentioned at the start of a line, the to-do you receive will be listed
as 'directly addressed'. For example, in this comment:
as *directly addressed*. For example, in the following comment:
```markdown
```markdown
@alice What do you think? cc: @bob
@alice What do you think? cc: @bob
...
@@ -79,81 +87,71 @@ as 'directly addressed'. For example, in this comment:
...
@@ -79,81 +87,71 @@ as 'directly addressed'. For example, in this comment:
@erin @frank thank you!
@erin @frank thank you!
```
```
The people receiving directly addressed To-Do items are `@alice`, `@erin`, and
The people receiving directly addressed to-do items are `@alice`, `@erin`, and
`@frank`. Directly addressed To-Do items only differ from mentions in their type
`@frank`. Directly addressed to-do items only differ from mentions in their type
for filtering purposes; otherwise, they appear as normal.
for filtering purposes; otherwise, they appear as normal.
### Manually creating a To Do
### Manually creating a to-do
You can also add the following to your To-Do List by clicking the **Add a To Do** button on an:
You can add an issue or merge request (or epic **(ULTIMATE)**) to your
To-Do List by clicking its **Add a To Do** button.
- Issue
- Merge Request
- Epic **(ULTIMATE)**
![Adding a To Do from the issuable sidebar](img/todos_add_todo_sidebar.png)
![Adding a To Do from the issuable sidebar](img/todos_add_todo_sidebar.png)
## Marking a To Do as done
## Marking a to-do as done
Any action to the following will mark the corresponding To Do as done:
- Issue
Any action to an issue or merge request (or epic **(ULTIMATE)**) will mark its
- Merge Request
corresponding to-do as done.
- Epic **(ULTIMATE)**
Actions that dismiss To-Do items include:
Actions that dismiss to-do items include:
- Changing the assignee
- Changing the assignee
- Changing the milestone
- Changing the milestone
- Adding/removing a label
- Adding/removing a label
- Commenting on the issue
- Commenting on the issue
Your To-Do List is personal, and items are only marked as done if the action comes from
Your To-Do List is personal, and items are only marked as done if you take
you. If you close the issue or merge request, your To Do is automatically
action. If you close the issue or merge request, your to-do is marked as done.
marked as done.
To prevent other users from closing issues without you being notified, if someone else closes, merges, or takes action on the any of the following, your To Do will remain pending:
- Issue
- Merge request
- Epic **(ULTIMATE)**
There is just one To Do for each of these, so mentioning a user a hundred times in an issue will only trigger one To Do.
To prevent other users from closing issues without you being notified, if
someone else closes, merges, or takes action on an issue or merge request (or
epic **(ULTIMATE)**), your to-do will remain pending.
If no action is needed, you can manually mark the To Do as done by clicking the
There's just one to-do for each of these, so mentioning a user many times in an
corresponding **Done** button, and it will disappear from your To-Do List.
issue will only trigger one to-do item.
![A To Do in the To-Do List](img/todos_todo_list_item.png)
If no action is needed, you can manually mark the to-do as done by clicking its
corresponding **Done** button to have GitLab remove the item from your
To-Do List.
You can also mark a To Do as done by clicking the **Mark as done** button in the sidebar of the following:
![A to-do in the To-Do List](img/todos_todo_list_item.png)
- Issue
You can also mark a to-do as done by clicking the **Mark as done** button in the
- Merge Request
sidebar of an issue or merge request (or epic **(ULTIMATE)**).
- Epic **(ULTIMATE)**
![Mark as done from the issuable sidebar](img/todos_mark_done_sidebar.png)
![Mark as done from the issuable sidebar](img/todos_mark_done_sidebar.png)
You can mark all your To-Do items as done at once by clicking the **Mark all as
You can mark all your to-do items as done at once by clicking the
done** button.
**Mark all as done** button.
## Filtering your To-Do List
## Filtering your To-Do List
There are four kinds of filters you can use on your To-Do List.
You can use the following types of filters with your To-Do List: