2021-01-29 00:20:46 +05:30
---
2021-06-08 01:23:25 +05:30
stage: Plan
group: Project Management
2021-02-22 17:27:13 +05:30
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
2021-01-29 00:20:46 +05:30
---
2021-03-11 19:13:27 +05:30
# Issue links API **(FREE)**
2021-01-03 14:25:43 +05:30
2021-11-11 11:23:49 +05:30
> The simple "relates to" relationship [moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212329) to GitLab Free in 13.4.
2019-09-04 21:01:54 +05:30
## List issue relations
2021-04-29 21:17:54 +05:30
Get a list of a given issue's [linked issues ](../user/project/issues/related_issues.md ),
2021-01-03 14:25:43 +05:30
sorted by the relationship creation datetime (ascending).
2021-02-22 17:27:13 +05:30
Issues are filtered according to the user authorizations.
2019-09-04 21:01:54 +05:30
2020-04-08 14:13:33 +05:30
```plaintext
2019-09-04 21:01:54 +05:30
GET /projects/:id/issues/:issue_iid/links
```
Parameters:
| Attribute | Type | Required | Description |
|-------------|---------|----------|--------------------------------------|
2021-09-30 23:02:18 +05:30
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2019-09-04 21:01:54 +05:30
| `issue_iid` | integer | yes | The internal ID of a project's issue |
```json
[
{
"id" : 84,
"iid" : 14,
2021-06-08 01:23:25 +05:30
"issue_link_id": 1,
2019-09-04 21:01:54 +05:30
"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,
2021-02-22 17:27:13 +05:30
"link_type": "relates_to",
"link_created_at": "2016-01-07T12:44:33.959Z",
"link_updated_at": "2016-01-07T12:44:33.959Z"
2019-09-04 21:01:54 +05:30
}
]
```
2022-07-23 23:45:48 +05:30
## Get an issue link
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/88228) in GitLab 15.1.
Gets details about an issue link.
```plaintext
GET /projects/:id/issues/:issue_iid/links/:issue_link_id
```
Supported attributes:
| Attribute | Type | Required | Description |
|-----------------|----------------|------------------------|-----------------------------------------------------------------------------|
| `id` | integer/string | ** {check-circle}** Yes | ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ). |
| `issue_iid` | integer | ** {check-circle}** Yes | Internal ID of a project's issue. |
| `issue_link_id` | integer/string | ** {check-circle}** Yes | ID of an issue relationship. |
Response body attributes:
| Attribute | Type | Description |
|:---------------|:-------|:------------------------------------------------------------------------------------------|
| `source_issue` | object | Details of the source issue of the relationship. |
| `target_issue` | object | Details of the target issue of the relationship. |
| `link_type` | string | Type of the relationship. Possible values are `relates_to` , `blocks` and `is_blocked_by` . |
Example request:
```shell
curl --request GET --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/84/issues/14/links/1"
```
Example response:
```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,
"weight": null
},
"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,
"weight": null
},
"link_type": "relates_to"
}
```
2019-09-04 21:01:54 +05:30
## Create an issue link
2021-01-03 14:25:43 +05:30
Creates a two-way relation between two issues. The user must be allowed to
update both issues to succeed.
2019-09-04 21:01:54 +05:30
2020-04-08 14:13:33 +05:30
```plaintext
2019-09-04 21:01:54 +05:30
POST /projects/:id/issues/:issue_iid/links
```
2021-01-03 14:25:43 +05:30
| Attribute | Type | Required | Description |
|---------------------|----------------|----------|--------------------------------------|
2021-09-30 23:02:18 +05:30
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2021-01-03 14:25:43 +05:30
| `issue_iid` | integer | yes | The internal ID of a project's issue |
2021-09-30 23:02:18 +05:30
| `target_project_id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) of a target project |
2021-01-03 14:25:43 +05:30
| `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-09-04 21:01:54 +05:30
2020-03-13 15:44:24 +05:30
```shell
2020-01-01 13:55:28 +05:30
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-09-04 21:01:54 +05:30
```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-06-08 01:23:25 +05:30
"weight": null
2019-09-04 21:01:54 +05:30
},
"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-06-08 01:23:25 +05:30
"weight": null
2020-03-13 15:44:24 +05:30
},
"link_type": "relates_to"
2019-09-04 21:01:54 +05:30
}
```
## Delete an issue link
Deletes an issue link, thus removes the two-way relationship.
2020-04-08 14:13:33 +05:30
```plaintext
2019-09-04 21:01:54 +05:30
DELETE /projects/:id/issues/:issue_iid/links/:issue_link_id
```
| Attribute | Type | Required | Description |
|-------------|---------|----------|--------------------------------------|
2021-09-30 23:02:18 +05:30
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2019-09-04 21:01:54 +05:30
| `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-04-17 20:07:23 +05:30
| `link_type` | string | no | The type of the relation (`relates_to`, `blocks` , `is_blocked_by` ), defaults to `relates_to` |
2019-09-04 21:01:54 +05:30
```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-06-08 01:23:25 +05:30
"weight": null
2019-09-04 21:01:54 +05:30
},
"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-06-08 01:23:25 +05:30
"weight": null
2020-03-13 15:44:24 +05:30
},
"link_type": "relates_to"
2019-09-04 21:01:54 +05:30
}
```