# Operations with Specific Issue VCS Changes and Pull Requests

This resource lets you work with VCS changes and pull requests linked to an issue.

Use the `$type` field in the response to distinguish VCS changes from pull requests. For pull request-specific attributes, see the [PullRequest](api-entity-PullRequest.html) entity.

|  Resource  |     ```GENERIC /api/issues/{issueID}/vcsChanges/{changeID} ```    |
| --- | --- |
|  Returned entity  |  [VcsChange](api-entity-VcsChange.html). For the description of the entity attributes, see [Supported Fields](#VcsChange-supported-fields) section.  |
|  Supported methods  |      * `GET`: [Issue VCS Changes and Pull Requests](#get-VcsChange-method).    * `POST`: [Issue VCS Changes and Pull Requests](#update-VcsChange-method).    * `DELETE`: [Issue VCS Changes and Pull Requests](#delete-VcsChange-method).    |

## VcsChange attributes

Represents a VCS change linked to an issue.

### Related Resources

Below you can find the list of resources that let you work with this entity.

* [Issue VCS Changes](resource-api-issues-issueID-vcsChanges.html)

### Attributes

This table describes attributes of the `VcsChange` entity.

* To receive an attribute in the response from the server, specify it explicitly in the `fields` request parameter.

* To update an attribute, provide it in the body of a POST request.

|  Field  |  Type  |  Description  |
| --- | --- | --- |
|  id  |  String  |  The database ID of the VCS change. `Read-only`.  |
|  date  |  DateTime  |  The date when the VCS change was committed to the repository. `Read-only`.  |
|  fetched  |  Long  |  The date when the VCS change was fetched from the repository to YouTrack. `Read-only`. `Can be null`.  |
|  files  |  Int  |  The number of files included into the VCS change. Equals -1 if the number of files is unknown. `Read-only`.  |
|  author  |  [User](api-entity-User.html)  |  The author of the VCS change. `Read-only`.  |
|  processors  |  [Array of ChangesProcessors](api-entity-ChangesProcessor.html)  |  The list of version control systems that contain the VCS change. `Read-only`.  |
|  text  |  String  |  The commit message of the VCS change. `Read-only`. `Can be null`.  |
|  urls  |  Array of Strings  |  The list of links to the VCS change in the corresponding version control systems. The order is the same as in the `processors` attribute. `Read-only`.  |
|  version  |  String  |  The commit hash of the VCS change. `Can be null`.  |
|  issue  |  [Issue](api-entity-Issue.html)  |  The YouTrack issue the VCS change is linked to. `Can be null`.  |
|  state  |  Byte  |    The code of the state of the VCS change. Here is the list of available state codes:    * 0 = default    * 1 = attached manually    * 2 = detached    * 3 = legacy  The list of state codes may be extended in the future API versions.    |

## Read a Specific VCS Change or Pull Request

Read a VCS change or pull request with a specific ID.

### Required permissions

Requires:

1. Read access to the issue.

2. Group membership in one of the groups in the "VCS changes visibility" setting in the VCS integration settings.

### Request syntax

```GENERIC
GET /api/issues/{issueID}/vcsChanges/{changeID}?{fields}
```

|  {changeID}  |  The database ID of the VCS change or pull request.  |
| --- | --- |

### Request parameters

|  Parameter  |  Type  |  Description  |
| --- | --- | --- |
|  fields  |  String  |  A list of VcsChange attributes that should be returned in the response. If no field is specified, only the `entityID` is returned.  |

### Sample 1

#### Sample request

```CURL
https://example.youtrack.cloud/api/issues/NP-5/vcsChanges/127-26?fields=id,date,fetched,files,author(login),text,urls,version,state
```

#### Sample response body

```JSON
{
  "version": "608e511cac30d0d6ec85fac6ae246ac88a16f2a1",
  "date": 1642067804000,
  "state": 1,
  "files": -1,
  "author": {
    "login": "john.smith",
    "$type": "User"
  },
  "fetched": 1642067825847,
  "text": "fix the bug",
  "id": "127-26",
  "$type": "VcsChange"
}
```

### Sample 2

#### Sample request

```CURL
https://example.youtrack.cloud/api/issues/NP-5/vcsChanges/127-28?fields=id,idReadable,title,url,author(login),date,fetched,text,state(id),$type
```

#### Sample response body

```JSON
{
  "idReadable": "PR-12",
  "date": 1642067804000,
  "state": {
    "id": "OPEN",
    "$type": "PullRequestState"
  },
  "author": {
    "login": "john.smith",
    "$type": "User"
  },
  "fetched": 1642067825847,
  "title": "Fix NP-5",
  "url": "https://example.com/repository/pull/12",
  "text": "Fixes NP-5",
  "id": "127-28",
  "$type": "PullRequest"
}
```

## Update a Specific VcsChange

Update an existing VCS change in the specific issue. You can only update the state of the change.

### Required permissions

Requires Update Issue Private Fields permission.

### Request syntax

```GENERIC
POST /api/issues/{issueID}/vcsChanges/{changeID}?{fields}&{muteUpdateNotifications}
```

|  {changeID}  |  The database ID of the VCS change.  |
| --- | --- |

### Request parameters

|  Parameter  |  Type  |  Description  |
| --- | --- | --- |
|  fields  |  String  |  A list of VcsChange attributes that should be returned in the response. If no field is specified, only the `entityID` is returned.  |
|  muteUpdateNotifications  |  Boolean  |  Set this parameter to `true` if no notifications should be sent on changes made by this request. This doesn't mute notifications sent by any workflow rules. Using this parameter requires Apply Commands Silently permission in all projects affected by the request. Available since 2021.3.  |

### Sample

#### Sample request

```CURL
https://example.youtrack.cloud/api/issues/NP-5/vcsChanges/127-27?fields=id,date,fetched,author(login),text,version,state
```

#### Sample request body

```JSON
{"state": 2}
```

#### Sample response body

```JSON
{
  "version": "03e876865ba4388205ac11788c6595f5ba8387a4",
  "date": 1642167090000,
  "state": 2,
  "author": {
    "login": "jane.doe",
    "$type": "User"
  },
  "fetched": 1642167188839,
  "text": "fix the bug",
  "id": "127-27",
  "$type": "VcsChange"
}
```

## Delete a Specific VcsChange

Detach the specific VCS change from the specific issue.

### Required permissions

Requires Update Issue Private Fields permission.

### Request syntax

```GENERIC
DELETE /api/issues/{issueID}/vcsChanges/{changeID}
```

|  {changeID}  |  The database ID of the VCS change.  |
| --- | --- |

### Request parameters

|  Parameter  |  Type  |  Description  |
| --- | --- | --- |
|  fields  |  String  |  A list of VcsChange attributes that should be returned in the response. If no field is specified, only the `entityID` is returned.  |

### Sample

#### Sample request

```CURL
https://example.youtrack.cloud/api/issues/NP-5/vcsChanges/127-27
```

