2014-05-27 08:12:15 -04:00
# Issues
2016-01-18 03:10:46 -05:00
Every API call to issues must be authenticated.
If a user is not a member of a project and the project is private, a `GET`
request on that project will result to a `404` status code.
## Issues pagination
By default, `GET` requests return 20 results at a time because the API results
are paginated.
Read more on [pagination ](README.md#pagination ).
2012-07-24 08:25:01 -04:00
## List issues
2016-01-18 03:10:46 -05:00
Get all issues created by the authenticated user.
2012-07-24 08:25:01 -04:00
```
GET /issues
2014-08-14 06:41:16 -04:00
GET /issues?state=opened
GET /issues?state=closed
2014-08-14 10:17:19 -04:00
GET /issues?labels=foo
GET /issues?labels=foo,bar
GET /issues?labels=foo,bar& state=opened
2016-10-26 04:08:58 -04:00
GET /issues?milestone=1.0.0
GET /issues?milestone=1.0.0& state=opened
2012-07-24 08:25:01 -04:00
```
2016-01-18 03:10:46 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `state` | string | no | Return all issues or just those that are `opened` or `closed` |
2017-01-27 12:34:15 -05:00
| `labels` | string | no | Comma-separated list of label names, issues must have all labels to be returned |
2016-10-26 04:08:58 -04:00
| `milestone` | string| no | The milestone title |
2016-01-18 03:10:46 -05:00
| `order_by` | string | no | Return requests ordered by `created_at` or `updated_at` fields. Default is `created_at` |
| `sort` | string | no | Return requests sorted in `asc` or `desc` order. Default is `desc` |
```bash
2016-08-08 03:47:17 -04:00
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/issues
2016-01-18 03:10:46 -05:00
```
2014-08-14 06:41:16 -04:00
2016-01-18 03:10:46 -05:00
Example response:
2014-08-14 06:41:16 -04:00
2012-07-24 08:25:01 -04:00
```json
[
2016-01-18 03:10:46 -05:00
{
"state" : "opened",
"description" : "Ratione dolores corrupti mollitia soluta quia.",
"author" : {
"state" : "active",
"id" : 18,
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/eileen.lowe",
2016-01-18 03:10:46 -05:00
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"username" : "eileen.lowe"
},
"milestone" : {
"project_id" : 1,
"description" : "Ducimus nam enim ex consequatur cumque ratione.",
"state" : "closed",
"due_date" : null,
"iid" : 2,
"created_at" : "2016-01-04T15:31:39.996Z",
"title" : "v4.0",
"id" : 17,
"updated_at" : "2016-01-04T15:31:39.996Z"
},
"project_id" : 1,
"assignee" : {
"state" : "active",
"id" : 1,
"name" : "Administrator",
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/root",
2016-01-18 03:10:46 -05:00
"avatar_url" : null,
"username" : "root"
},
"updated_at" : "2016-01-04T15:31:51.081Z",
"id" : 76,
"title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
"created_at" : "2016-01-04T15:31:51.081Z",
"iid" : 6,
2016-04-08 02:41:10 -04:00
"labels" : [],
2016-02-23 16:59:32 -05:00
"subscribed" : false,
2016-07-12 11:59:21 -04:00
"user_notes_count": 1,
2016-08-02 13:37:04 -04:00
"due_date": "2016-07-22",
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/6",
"confidential": false
2016-04-08 02:41:10 -04:00
}
2012-07-24 08:25:01 -04:00
]
```
2016-06-07 18:01:54 -04:00
## List group issues
Get a list of a group's issues.
```
GET /groups/:id/issues
GET /groups/:id/issues?state=opened
GET /groups/:id/issues?state=closed
GET /groups/:id/issues?labels=foo
GET /groups/:id/issues?labels=foo,bar
GET /groups/:id/issues?labels=foo,bar& state=opened
GET /groups/:id/issues?milestone=1.0.0
GET /groups/:id/issues?milestone=1.0.0& state=opened
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a group |
| `state` | string | no | Return all issues or just those that are `opened` or `closed` |
| `labels` | string | no | Comma-separated list of label names, issues must have all labels to be returned |
| `milestone` | string| no | The milestone title |
| `order_by` | string | no | Return requests ordered by `created_at` or `updated_at` fields. Default is `created_at` |
| `sort` | string | no | Return requests sorted in `asc` or `desc` order. Default is `desc` |
```bash
2016-08-08 03:47:17 -04:00
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/groups/4/issues
2016-06-07 18:01:54 -04:00
```
Example response:
```json
[
{
"project_id" : 4,
"milestone" : {
"due_date" : null,
"project_id" : 4,
"state" : "closed",
"description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
"iid" : 3,
"id" : 11,
"title" : "v3.0",
"created_at" : "2016-01-04T15:31:39.788Z",
"updated_at" : "2016-01-04T15:31:39.788Z"
},
"author" : {
"state" : "active",
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/root",
2016-06-07 18:01:54 -04:00
"avatar_url" : null,
"username" : "root",
"id" : 1,
"name" : "Administrator"
},
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"state" : "closed",
"iid" : 1,
"assignee" : {
"avatar_url" : null,
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/lennie",
2016-06-07 18:01:54 -04:00
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
},
"labels" : [],
"id" : 41,
"title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
"updated_at" : "2016-01-04T15:31:46.176Z",
"created_at" : "2016-01-04T15:31:46.176Z",
"subscribed" : false,
2016-07-12 11:59:21 -04:00
"user_notes_count": 1,
2016-08-02 13:37:04 -04:00
"due_date": null,
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/1",
"confidential": false
2016-06-07 18:01:54 -04:00
}
]
```
2012-07-24 08:25:01 -04:00
## List project issues
2016-01-18 03:10:46 -05:00
Get a list of a project's issues.
2012-07-24 08:25:01 -04:00
```
GET /projects/:id/issues
2014-08-14 06:41:16 -04:00
GET /projects/:id/issues?state=opened
GET /projects/:id/issues?state=closed
2014-08-14 10:17:19 -04:00
GET /projects/:id/issues?labels=foo
GET /projects/:id/issues?labels=foo,bar
GET /projects/:id/issues?labels=foo,bar& state=opened
2014-09-04 18:01:12 -04:00
GET /projects/:id/issues?milestone=1.0.0
GET /projects/:id/issues?milestone=1.0.0& state=opened
2012-07-24 08:25:01 -04:00
```
2016-01-18 03:10:46 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `iid` | integer | no | Return the issue having the given `iid` |
| `state` | string | no | Return all issues or just those that are `opened` or `closed` |
2017-01-27 12:34:15 -05:00
| `labels` | string | no | Comma-separated list of label names, issues must have all labels to be returned |
2016-01-18 03:10:46 -05:00
| `milestone` | string| no | The milestone title |
| `order_by` | string | no | Return requests ordered by `created_at` or `updated_at` fields. Default is `created_at` |
| `sort` | string | no | Return requests sorted in `asc` or `desc` order. Default is `desc` |
```bash
2016-08-08 03:47:17 -04:00
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/4/issues
2016-01-18 03:10:46 -05:00
```
Example response:
2012-07-24 08:25:01 -04:00
2016-01-18 03:10:46 -05:00
```json
[
{
"project_id" : 4,
"milestone" : {
"due_date" : null,
"project_id" : 4,
"state" : "closed",
"description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
"iid" : 3,
"id" : 11,
"title" : "v3.0",
"created_at" : "2016-01-04T15:31:39.788Z",
"updated_at" : "2016-01-04T15:31:39.788Z"
},
"author" : {
"state" : "active",
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/root",
2016-01-18 03:10:46 -05:00
"avatar_url" : null,
"username" : "root",
"id" : 1,
"name" : "Administrator"
},
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"state" : "closed",
"iid" : 1,
"assignee" : {
"avatar_url" : null,
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/lennie",
2016-01-18 03:10:46 -05:00
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
},
"labels" : [],
"id" : 41,
"title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
"updated_at" : "2016-01-04T15:31:46.176Z",
2016-04-08 02:41:10 -04:00
"created_at" : "2016-01-04T15:31:46.176Z",
2016-02-23 16:59:32 -05:00
"subscribed" : false,
2016-07-12 11:59:21 -04:00
"user_notes_count": 1,
2016-08-02 13:37:04 -04:00
"due_date": "2016-07-22",
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/1",
"confidential": false
2016-01-18 03:10:46 -05:00
}
]
```
2013-02-27 08:36:20 -05:00
2012-07-24 08:25:01 -04:00
## Single issue
2016-01-18 03:10:46 -05:00
Get a single project issue.
2012-07-24 08:25:01 -04:00
```
GET /projects/:id/issues/:issue_id
```
2016-01-18 03:10:46 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
2012-07-24 08:25:01 -04:00
2016-01-18 03:10:46 -05:00
```bash
2016-08-08 03:47:17 -04:00
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/4/issues/41
2016-01-18 03:10:46 -05:00
```
Example response:
2012-07-24 08:25:01 -04:00
```json
{
2016-01-18 03:10:46 -05:00
"project_id" : 4,
"milestone" : {
"due_date" : null,
"project_id" : 4,
"state" : "closed",
"description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
"iid" : 3,
"id" : 11,
"title" : "v3.0",
"created_at" : "2016-01-04T15:31:39.788Z",
"updated_at" : "2016-01-04T15:31:39.788Z"
},
"author" : {
"state" : "active",
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/root",
2016-01-18 03:10:46 -05:00
"avatar_url" : null,
"username" : "root",
"id" : 1,
"name" : "Administrator"
},
"description" : "Omnis vero earum sunt corporis dolor et placeat.",
"state" : "closed",
"iid" : 1,
"assignee" : {
"avatar_url" : null,
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/lennie",
2016-01-18 03:10:46 -05:00
"state" : "active",
"username" : "lennie",
"id" : 9,
"name" : "Dr. Luella Kovacek"
},
"labels" : [],
"id" : 41,
"title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
"updated_at" : "2016-01-04T15:31:46.176Z",
2016-04-08 02:41:10 -04:00
"created_at" : "2016-01-04T15:31:46.176Z",
2016-02-23 16:59:32 -05:00
"subscribed": false,
2016-07-12 11:59:21 -04:00
"user_notes_count": 1,
2016-08-02 13:37:04 -04:00
"due_date": null,
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/1",
"confidential": false
2012-07-24 08:25:01 -04:00
}
```
## New issue
2013-02-27 08:36:20 -05:00
Creates a new project issue.
2012-07-24 08:25:01 -04:00
```
POST /projects/:id/issues
```
2016-01-18 03:10:46 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `title` | string | yes | The title of an issue |
| `description` | string | no | The description of an issue |
2016-07-15 10:21:53 -04:00
| `confidential` | boolean | no | Set an issue to be confidential. Default is `false` . |
2016-01-18 03:10:46 -05:00
| `assignee_id` | integer | no | The ID of a user to assign issue |
| `milestone_id` | integer | no | The ID of a milestone to assign issue |
| `labels` | string | no | Comma-separated label names for an issue |
2016-08-23 13:56:21 -04:00
| `created_at` | string | no | Date time string, ISO 8601 formatted, e.g. `2016-03-11T03:45:40Z` (requires admin or project owner rights) |
2016-08-23 13:57:34 -04:00
| `due_date` | string | no | Date time string in the format YEAR-MONTH-DAY, e.g. `2016-03-11` |
2016-10-26 17:21:50 -04:00
| `merge_request_for_resolving_discussions` | integer | no | The IID of a merge request in which to resolve all issues. This will fill the issue with a default description and mark all discussions as resolved. When passing a description or title, these values will take precedence over the default values. |
2016-01-18 03:10:46 -05:00
```bash
2016-08-08 03:47:17 -04:00
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/4/issues?title=Issues%20with%20auth& labels=bug
2016-01-18 03:10:46 -05:00
```
2012-07-24 08:25:01 -04:00
2016-01-18 03:10:46 -05:00
Example response:
2012-07-24 08:25:01 -04:00
2016-01-18 03:10:46 -05:00
```json
{
"project_id" : 4,
"id" : 84,
"created_at" : "2016-01-07T12:44:33.959Z",
"iid" : 14,
"title" : "Issues with auth",
"state" : "opened",
"assignee" : null,
"labels" : [
"bug"
],
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"state" : "active",
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/eileen.lowe",
2016-01-18 03:10:46 -05:00
"id" : 18,
"username" : "eileen.lowe"
},
"description" : null,
"updated_at" : "2016-01-07T12:44:33.959Z",
2016-04-08 02:41:10 -04:00
"milestone" : null,
2016-02-23 16:59:32 -05:00
"subscribed" : true,
2016-07-12 11:59:21 -04:00
"user_notes_count": 0,
2016-08-02 13:37:04 -04:00
"due_date": null,
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/14",
"confidential": false
2016-01-18 03:10:46 -05:00
}
```
2014-08-14 04:17:52 -04:00
2012-07-24 08:25:01 -04:00
## Edit issue
2016-01-18 03:10:46 -05:00
Updates an existing project issue. This call is also used to mark an issue as
closed.
2012-07-24 08:25:01 -04:00
```
PUT /projects/:id/issues/:issue_id
```
2016-01-18 03:10:46 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
| `title` | string | no | The title of an issue |
| `description` | string | no | The description of an issue |
2016-07-15 10:21:53 -04:00
| `confidential` | boolean | no | Updates an issue to be confidential |
2016-01-18 03:10:46 -05:00
| `assignee_id` | integer | no | The ID of a user to assign the issue to |
| `milestone_id` | integer | no | The ID of a milestone to assign the issue to |
| `labels` | string | no | Comma-separated label names for an issue |
| `state_event` | string | no | The state event of an issue. Set `close` to close the issue and `reopen` to reopen it |
2016-08-23 13:56:21 -04:00
| `updated_at` | string | no | Date time string, ISO 8601 formatted, e.g. `2016-03-11T03:45:40Z` (requires admin or project owner rights) |
2016-08-23 13:57:34 -04:00
| `due_date` | string | no | Date time string in the format YEAR-MONTH-DAY, e.g. `2016-03-11` |
2016-01-18 03:10:46 -05:00
```bash
2016-08-08 03:47:17 -04:00
curl --request PUT --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/4/issues/85?state_event=close
2016-01-18 03:10:46 -05:00
```
2012-07-24 08:25:01 -04:00
2016-01-18 03:10:46 -05:00
Example response:
2013-02-27 08:36:20 -05:00
2016-01-18 03:10:46 -05:00
```json
{
"created_at" : "2016-01-07T12:46:01.410Z",
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"username" : "eileen.lowe",
"id" : 18,
"state" : "active",
2016-10-13 07:24:09 -04:00
"web_url" : "https://gitlab.example.com/eileen.lowe"
2016-01-18 03:10:46 -05:00
},
"state" : "closed",
"title" : "Issues with auth",
"project_id" : 4,
"description" : null,
"updated_at" : "2016-01-07T12:55:16.213Z",
"iid" : 15,
"labels" : [
"bug"
],
"id" : 85,
"assignee" : null,
2016-04-08 02:41:10 -04:00
"milestone" : null,
2016-02-23 16:59:32 -05:00
"subscribed" : true,
2016-07-12 11:59:21 -04:00
"user_notes_count": 0,
2016-08-02 13:37:04 -04:00
"due_date": "2016-07-22",
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/15",
"confidential": false
2016-01-18 03:10:46 -05:00
}
```
2014-08-14 04:17:52 -04:00
2016-03-21 09:12:52 -04:00
## Delete an issue
2013-02-27 08:36:20 -05:00
2016-03-21 09:12:52 -04:00
Only for admins and project owners. Soft deletes the issue in question.
2013-02-27 08:36:20 -05:00
```
DELETE /projects/:id/issues/:issue_id
```
2016-02-26 03:55:43 -05:00
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
```bash
2016-08-08 03:47:17 -04:00
curl --request DELETE --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/4/issues/85
2016-02-26 03:55:43 -05:00
```
2016-04-07 08:07:17 -04:00
## Move an issue
2016-11-24 12:28:52 -05:00
Moves an issue to a different project. If the target project
2016-04-12 12:38:18 -04:00
equals the source project or the user has insufficient permissions to move an
issue, error `400` together with an explaining error message is returned.
2016-04-07 08:07:17 -04:00
2016-05-06 06:52:04 -04:00
If a given label and/or milestone with the same name also exists in the target
project, it will then be assigned to the issue that is being moved.
2016-04-07 08:07:17 -04:00
```
POST /projects/:id/issues/:issue_id/move
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
2016-04-13 06:03:05 -04:00
| `to_project_id` | integer | yes | The ID of the new project |
2016-04-07 08:07:17 -04:00
```bash
2016-08-08 03:47:17 -04:00
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/4/issues/85/move
2016-04-07 08:07:17 -04:00
```
Example response:
```json
{
"id": 92,
"iid": 11,
"project_id": 5,
"title": "Sit voluptas tempora quisquam aut doloribus et.",
"description": "Repellat voluptas quibusdam voluptatem exercitationem.",
"state": "opened",
"created_at": "2016-04-05T21:41:45.652Z",
"updated_at": "2016-04-07T12:20:17.596Z",
"labels": [],
"milestone": null,
"assignee": {
"name": "Miss Monserrate Beier",
"username": "axel.block",
"id": 12,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/axel.block"
2016-04-07 08:07:17 -04:00
},
"author": {
"name": "Kris Steuber",
"username": "solon.cremin",
"id": 10,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/7a190fecbaa68212a4b68aeb6e3acd10?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/solon.cremin"
2016-07-12 11:59:21 -04:00
},
2016-08-02 13:37:04 -04:00
"due_date": null,
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/11",
"confidential": false
2016-04-07 08:07:17 -04:00
}
```
2016-04-08 08:17:42 -04:00
## Subscribe to an issue
2016-10-26 17:21:50 -04:00
Subscribes the authenticated user to an issue to receive notifications.
2016-11-24 12:28:52 -05:00
If the user is already subscribed to the issue, the status code `304`
is returned.
2016-04-08 08:17:42 -04:00
```
2017-02-17 04:49:45 -05:00
POST /projects/:id/issues/:issue_id/subscribe
2016-04-08 08:17:42 -04:00
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
```bash
2017-02-17 04:49:45 -05:00
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/issues/93/subscribe
2016-04-08 08:17:42 -04:00
```
Example response:
```json
{
"id": 92,
"iid": 11,
"project_id": 5,
"title": "Sit voluptas tempora quisquam aut doloribus et.",
"description": "Repellat voluptas quibusdam voluptatem exercitationem.",
"state": "opened",
"created_at": "2016-04-05T21:41:45.652Z",
"updated_at": "2016-04-07T12:20:17.596Z",
"labels": [],
"milestone": null,
"assignee": {
"name": "Miss Monserrate Beier",
"username": "axel.block",
"id": 12,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/axel.block"
2016-04-08 08:17:42 -04:00
},
"author": {
"name": "Kris Steuber",
"username": "solon.cremin",
"id": 10,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/7a190fecbaa68212a4b68aeb6e3acd10?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/solon.cremin"
2016-07-12 11:59:21 -04:00
},
2016-08-02 13:37:04 -04:00
"due_date": null,
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/11",
"confidential": false
2016-04-08 08:17:42 -04:00
}
```
## Unsubscribe from an issue
2016-04-12 08:46:59 -04:00
Unsubscribes the authenticated user from the issue to not receive notifications
2016-11-24 12:28:52 -05:00
from it. If the user is not subscribed to the issue, the
status code `304` is returned.
2016-04-08 08:17:42 -04:00
```
2017-02-17 04:49:45 -05:00
DELETE /projects/:id/issues/:issue_id/unsubscribe
2016-04-08 08:17:42 -04:00
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
```bash
2017-02-17 04:49:45 -05:00
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/issues/93/unsubscribe
2016-04-08 08:17:42 -04:00
```
Example response:
```json
{
"id": 93,
"iid": 12,
"project_id": 5,
"title": "Incidunt et rerum ea expedita iure quibusdam.",
"description": "Et cumque architecto sed aut ipsam.",
"state": "opened",
"created_at": "2016-04-05T21:41:45.217Z",
"updated_at": "2016-04-07T13:02:37.905Z",
"labels": [],
"milestone": null,
"assignee": {
"name": "Edwardo Grady",
"username": "keyon",
"id": 21,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/3e6f06a86cf27fa8b56f3f74f7615987?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/keyon"
2016-04-08 08:17:42 -04:00
},
"author": {
"name": "Vivian Hermann",
"username": "orville",
"id": 11,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/5224fd70153710e92fb8bcf79ac29d67?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/orville"
2016-04-08 08:17:42 -04:00
},
2016-07-12 11:59:21 -04:00
"subscribed": false,
2016-08-02 13:37:04 -04:00
"due_date": null,
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/12",
"confidential": false
2016-04-08 08:17:42 -04:00
}
```
2016-06-28 12:04:44 -04:00
## Create a todo
2016-11-24 12:28:52 -05:00
Manually creates a todo for the current user on an issue. If
2016-06-28 12:04:44 -04:00
there already exists a todo for the user on that issue, status code `304` is
returned.
```
POST /projects/:id/issues/:issue_id/todo
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
```bash
2016-08-08 03:47:17 -04:00
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/issues/93/todo
2016-06-28 12:04:44 -04:00
```
Example response:
```json
{
"id": 112,
"project": {
"id": 5,
"name": "Gitlab Ci",
"name_with_namespace": "Gitlab Org / Gitlab Ci",
"path": "gitlab-ci",
"path_with_namespace": "gitlab-org/gitlab-ci"
},
"author": {
"name": "Administrator",
"username": "root",
"id": 1,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/root"
2016-06-28 12:04:44 -04:00
},
"action_name": "marked",
"target_type": "Issue",
"target": {
"id": 93,
"iid": 10,
"project_id": 5,
"title": "Vel voluptas atque dicta mollitia adipisci qui at.",
"description": "Tempora laboriosam sint magni sed voluptas similique.",
"state": "closed",
"created_at": "2016-06-17T07:47:39.486Z",
"updated_at": "2016-07-01T11:09:13.998Z",
"labels": [],
"milestone": {
"id": 26,
"iid": 1,
"project_id": 5,
"title": "v0.0",
"description": "Accusantium nostrum rerum quae quia quis nesciunt suscipit id.",
"state": "closed",
"created_at": "2016-06-17T07:47:33.832Z",
"updated_at": "2016-06-17T07:47:33.832Z",
"due_date": null
},
"assignee": {
"name": "Jarret O'Keefe",
"username": "francisca",
"id": 14,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/a7fa515d53450023c83d62986d0658a8?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/francisca"
2016-06-28 12:04:44 -04:00
},
"author": {
"name": "Maxie Medhurst",
"username": "craig_rutherford",
"id": 12,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80& d=identicon",
2016-10-13 07:24:09 -04:00
"web_url": "https://gitlab.example.com/craig_rutherford"
2016-06-28 12:04:44 -04:00
},
"subscribed": true,
"user_notes_count": 7,
"upvotes": 0,
2016-08-02 13:37:04 -04:00
"downvotes": 0,
"due_date": null,
2016-07-15 10:21:53 -04:00
"web_url": "http://example.com/example/example/issues/110",
"confidential": false
2016-06-28 12:04:44 -04:00
},
"target_url": "https://gitlab.example.com/gitlab-org/gitlab-ci/issues/10",
"body": "Vel voluptas atque dicta mollitia adipisci qui at.",
"state": "pending",
"created_at": "2016-07-01T11:09:13.992Z"
}
```
2017-01-18 11:48:16 -05:00
## Set a time estimate for an issue
Sets an estimated time of work for this issue.
```
POST /projects/:id/issues/:issue_id/time_estimate
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
| `duration` | string | yes | The duration in human format. e.g: 3h30m |
```bash
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/issues/93/time_estimate?duration=3h30m
```
Example response:
```json
{
"human_time_estimate": "3h 30m",
"human_total_time_spent": null,
"time_estimate": 12600,
"total_time_spent": 0
}
```
## Reset the time estimate for an issue
Resets the estimated time for this issue to 0 seconds.
```
POST /projects/:id/issues/:issue_id/reset_time_estimate
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
```bash
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/issues/93/reset_time_estimate
```
Example response:
```json
{
"human_time_estimate": null,
"human_total_time_spent": null,
"time_estimate": 0,
"total_time_spent": 0
}
```
## Add spent time for an issue
Adds spent time for this issue
```
POST /projects/:id/issues/:issue_id/add_spent_time
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
| `duration` | string | yes | The duration in human format. e.g: 3h30m |
```bash
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/issues/93/add_spent_time?duration=1h
```
Example response:
```json
{
"human_time_estimate": null,
"human_total_time_spent": "1h",
"time_estimate": 0,
"total_time_spent": 3600
}
```
## Reset spent time for an issue
Resets the total spent time for this issue to 0 seconds.
```
POST /projects/:id/issues/:issue_id/reset_spent_time
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
```bash
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/issues/93/reset_spent_time
```
Example response:
```json
{
"human_time_estimate": null,
"human_total_time_spent": null,
"time_estimate": 0,
"total_time_spent": 0
}
```
## Get time tracking stats
```
GET /projects/:id/issues/:issue_id/time_stats
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `issue_id` | integer | yes | The ID of a project's issue |
```bash
curl --request GET --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/issues/93/time_stats
```
Example response:
```json
{
"human_time_estimate": "2h",
"human_total_time_spent": "1h",
"time_estimate": 7200,
"total_time_spent": 3600
}
```
2014-04-30 11:28:05 -04:00
## Comments on issues
2016-01-18 03:10:46 -05:00
Comments are done via the [notes ](notes.md ) resource.