2020-10-28 11:08:49 -04:00
---
2021-04-23 11:09:37 -04:00
stage: Plan
group: Project Management
2020-11-26 01:09:20 -05:00
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/#assignments
2020-10-28 11:08:49 -04:00
---
2021-01-28 01:08:59 -05:00
# Issue links API **(FREE)**
2020-09-18 20:09:50 -04:00
2021-09-15 20:11:46 -04:00
> The simple "relates to" relationship [moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212329) to GitLab Free in 13.4.
2019-05-18 17:27:41 -04:00
## List issue relations
2021-04-06 14:09:02 -04:00
Get a list of a given issue's [linked issues ](../user/project/issues/related_issues.md ),
2020-09-18 20:09:50 -04:00
sorted by the relationship creation datetime (ascending).
2020-11-19 16:09:07 -05:00
Issues are filtered according to the user authorizations.
2019-05-18 17:27:41 -04:00
2020-02-27 04:09:01 -05:00
```plaintext
2019-05-18 17:27:41 -04:00
GET /projects/:id/issues/:issue_iid/links
```
Parameters:
| Attribute | Type | Required | Description |
|-------------|---------|----------|--------------------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2019-05-18 17:27:41 -04:00
| `issue_iid` | integer | yes | The internal ID of a project's issue |
```json
[
{
"id" : 84,
"iid" : 14,
2021-04-23 11:09:37 -04:00
"issue_link_id": 1,
2019-05-18 17:27:41 -04:00
"project_id" : 4,
"created_at" : "2016-01-07T12:44:33.959Z",
"title" : "Issues with auth",
"state" : "opened",
"assignees" : [],
"assignee" : null,
"labels" : [
"bug"
],
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"state" : "active",
"web_url" : "https://gitlab.example.com/eileen.lowe",
"id" : 18,
"username" : "eileen.lowe"
},
"description" : null,
"updated_at" : "2016-01-07T12:44:33.959Z",
"milestone" : null,
"user_notes_count": 0,
"due_date": null,
"web_url": "http://example.com/example/example/issues/14",
"confidential": false,
"weight": null,
2020-11-19 19:09:06 -05:00
"link_type": "relates_to",
"link_created_at": "2016-01-07T12:44:33.959Z",
"link_updated_at": "2016-01-07T12:44:33.959Z"
2019-05-18 17:27:41 -04:00
}
]
```
## Create an issue link
2020-10-02 17:08:18 -04:00
Creates a two-way relation between two issues. The user must be allowed to
update both issues to succeed.
2019-05-18 17:27:41 -04:00
2020-02-27 04:09:01 -05:00
```plaintext
2019-12-20 13:07:53 -05:00
POST /projects/:id/issues/:issue_iid/links
2019-05-18 17:27:41 -04:00
```
2020-10-02 17:08:18 -04:00
| Attribute | Type | Required | Description |
|---------------------|----------------|----------|--------------------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2020-10-02 17:08:18 -04:00
| `issue_iid` | integer | yes | The internal ID of a project's issue |
2021-06-28 11:08:03 -04:00
| `target_project_id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) of a target project |
2020-10-02 17:08:18 -04:00
| `target_issue_iid` | integer/string | yes | The internal ID of a target project's issue |
| `link_type` | string | no | The type of the relation ("relates_to", "blocks", "is_blocked_by"), defaults to "relates_to"). |
2019-05-18 17:27:41 -04:00
2020-01-30 10:09:15 -05:00
```shell
2019-12-20 13:07:53 -05:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/4/issues/1/links?target_project_id=5& target_issue_iid=1"
```
Example response:
2019-05-18 17:27:41 -04:00
```json
{
"source_issue" : {
"id" : 83,
"iid" : 11,
"project_id" : 4,
"created_at" : "2016-01-07T12:44:33.959Z",
"title" : "Issues with auth",
"state" : "opened",
"assignees" : [],
"assignee" : null,
"labels" : [
"bug"
],
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"state" : "active",
"web_url" : "https://gitlab.example.com/eileen.lowe",
"id" : 18,
"username" : "eileen.lowe"
},
"description" : null,
"updated_at" : "2016-01-07T12:44:33.959Z",
"milestone" : null,
"subscribed" : true,
"user_notes_count": 0,
"due_date": null,
"web_url": "http://example.com/example/example/issues/11",
"confidential": false,
2021-04-29 08:09:58 -04:00
"weight": null
2019-05-18 17:27:41 -04:00
},
"target_issue" : {
"id" : 84,
"iid" : 14,
"project_id" : 4,
"created_at" : "2016-01-07T12:44:33.959Z",
"title" : "Issues with auth",
"state" : "opened",
"assignees" : [],
"assignee" : null,
"labels" : [
"bug"
],
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"state" : "active",
"web_url" : "https://gitlab.example.com/eileen.lowe",
"id" : 18,
"username" : "eileen.lowe"
},
"description" : null,
"updated_at" : "2016-01-07T12:44:33.959Z",
"milestone" : null,
"subscribed" : true,
"user_notes_count": 0,
"due_date": null,
"web_url": "http://example.com/example/example/issues/14",
"confidential": false,
2021-04-29 08:09:58 -04:00
"weight": null
2020-01-08 13:07:32 -05:00
},
"link_type": "relates_to"
2019-05-18 17:27:41 -04:00
}
```
## Delete an issue link
Deletes an issue link, thus removes the two-way relationship.
2020-02-27 04:09:01 -05:00
```plaintext
2019-05-18 17:27:41 -04:00
DELETE /projects/:id/issues/:issue_iid/links/:issue_link_id
```
| Attribute | Type | Required | Description |
|-------------|---------|----------|--------------------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2019-05-18 17:27:41 -04:00
| `issue_iid` | integer | yes | The internal ID of a project's issue |
| `issue_link_id` | integer/string | yes | The ID of an issue relationship |
2021-03-12 16:09:12 -05:00
| `link_type` | string | no | The type of the relation (`relates_to`, `blocks` , `is_blocked_by` ), defaults to `relates_to` |
2019-05-18 17:27:41 -04:00
```json
{
"source_issue" : {
"id" : 83,
"iid" : 11,
"project_id" : 4,
"created_at" : "2016-01-07T12:44:33.959Z",
"title" : "Issues with auth",
"state" : "opened",
"assignees" : [],
"assignee" : null,
"labels" : [
"bug"
],
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"state" : "active",
"web_url" : "https://gitlab.example.com/eileen.lowe",
"id" : 18,
"username" : "eileen.lowe"
},
"description" : null,
"updated_at" : "2016-01-07T12:44:33.959Z",
"milestone" : null,
"subscribed" : true,
"user_notes_count": 0,
"due_date": null,
"web_url": "http://example.com/example/example/issues/11",
"confidential": false,
2021-04-29 08:09:58 -04:00
"weight": null
2019-05-18 17:27:41 -04:00
},
"target_issue" : {
"id" : 84,
"iid" : 14,
"project_id" : 4,
"created_at" : "2016-01-07T12:44:33.959Z",
"title" : "Issues with auth",
"state" : "opened",
"assignees" : [],
"assignee" : null,
"labels" : [
"bug"
],
"author" : {
"name" : "Alexandra Bashirian",
"avatar_url" : null,
"state" : "active",
"web_url" : "https://gitlab.example.com/eileen.lowe",
"id" : 18,
"username" : "eileen.lowe"
},
"description" : null,
"updated_at" : "2016-01-07T12:44:33.959Z",
"milestone" : null,
"subscribed" : true,
"user_notes_count": 0,
"due_date": null,
"web_url": "http://example.com/example/example/issues/14",
"confidential": false,
2021-04-29 08:09:58 -04:00
"weight": null
2020-01-08 13:07:32 -05:00
},
"link_type": "relates_to"
2019-05-18 17:27:41 -04:00
}
```