# Issue Attachments

This resource lets you work with attachments in the specific issue.
|  Resource  |     ```GENERIC /api/issues/{issueID}/attachments ```    |
| --- | --- |
|  Returned entity  |  [IssueAttachment](api-entity-IssueAttachment.html). For the description of the entity attributes, see [Supported Fields](#IssueAttachment-supported-fields) section.  |
|  Supported methods  |      * `GET`: [Read a List of IssueAttachments](#get_all-IssueAttachment-method).    * `POST`: [Add a New IssueAttachment](#create-IssueAttachment-method).    |

## IssueAttachment attributes

Represents a file that is attached to an issue or a comment.

### Related Resources

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

* [Issue Attachments]()

### Attributes

This table describes attributes of the `IssueAttachment` 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 ID of the attachment. `Read-only`.  |
|  name  |  String  |  The name of the file.  |
|  author  |  [User](api-entity-User.html)  |  The user who attached the file to the issue. `Read-only`. `Can be null`.  |
|  created  |  Long  |  The timestamp in milliseconds indicating the moment when the attachment was created. Stored as a unix timestamp at UTC. `Read-only`.  |
|  updated  |  Long  |  The timestamp in milliseconds indicating the last update of the attachment. Stored as a unix timestamp at UTC. `Read-only`.  |
|  size  |  Long  |  The size of the attached file in bytes. `Read-only`.  |
|  extension  |  String  |  The extension that defines the file type. `Read-only`. `Can be null`.  |
|  charset  |  String  |  Charset of the file. `Read-only`. `Can be null`.  |
|  mimeType  |  String  |  Mime type of the file. `Read-only`. `Can be null`.  |
|  metaData  |  String  |  The dimensions of an image file. For an image file, the value is `rw=&rh=`. For a non-image file, the value is empty. `Read-only`. `Can be null`.  |
|  draft  |  Boolean  |  If true, attachment is not yet published, otherwise false. `Read-only`.  |
|  removed  |  Boolean  |  If true, then attachment is considered to be removed. `Read-only`.  |
|  base64Content  |  String  |     The Data URI that represents the attachment with the following syntax:       ```PLAINTEXT data:[<media type>][;base64],<data> ```      For example:       ```PLAINTEXT "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" ```   `Can be null`.  |
|  url  |  String  |  URL of the file. `Read-only`. `Can be null`.  |
|  visibility  |  [Visibility](api-entity-Visibility.html)  |  Access setting of the attachment. `Can be null`.  |
|  issue  |  [Issue](api-entity-Issue.html)  |  The issue that the file is attached to. `Read-only`. `Can be null`.  |
|  comment  |  [IssueComment](api-entity-IssueComment.html)  |  The comment that the file is attached to. Returns `null`, if the file was attached directly to the issue. `Read-only`.  |
|  thumbnailURL  |  String  |  URL of the attachment thumbnail. `Read-only`. `Can be null`.  |

## Read a List of IssueAttachments

Get a list of all attachments of the specific issue.

### Required permissions

Requires access to the issue where the attachment belongs.

### Request syntax

```GENERIC
GET /api/issues/{issueID}/attachments?{fields}&{$top}&{$skip}
```

|  null  |  The database ID of IssueAttachment  |
| --- | --- |

### Request parameters

|  Parameter  |  Type  |  Description  |
| --- | --- | --- |
|  fields  |  String  |  A list of IssueAttachment attributes that should be returned in the response. If no field is specified, only the `entityID` is returned.  |
|  $skip  |  Int  |  Optional. Lets you set a number of returned entities to skip before returning the first one.  |
|  $top  |  Int  |     Optional. Lets you specify the maximum number of entries that are returned in the response. If you don't set the $top value, the server limits the maximum number of returned entries.       The server returns a maximum of 42 entries for most resources that return collections. For more information, see [Pagination](api-concept-pagination.html).     |

### Sample

#### Sample request

```CURL
https://example.youtrack.cloud/api/issues/2-6/attachments?fields=id,name,author(id,name),created,updated,size,mimeType,extension,charset,metaData,url
```

#### Sample response body

```JSON
[
  {
    "created": 1554209839634,
    "updated": 1554209839578,
    "author": {
      "name": "John Smith",
      "id": "1-1",
      "$type": "User"
    },
    "metaData": "rw=568&rh=902",
    "charset": null,
    "name": "2019-03-28_14-30-46.png",
    "size": 208788,
    "extension": "png",
    "url": "/youtrack/api/files/1-1/sign=fake",
    "mimeType": "image/png",
    "id": "7-2",
    "$type": "IssueAttachment"
  },
  {
    "created": 1554209920779,
    "updated": 1554209920719,
    "author": {
      "name": "John Smith",
      "id": "1-1",
      "$type": "User"
    },
    "metaData": "rw=375&rh=226",
    "charset": null,
    "name": "older-versions.png",
    "size": 23812,
    "extension": "png",
    "url": "/youtrack/api/files/1-2/sign=fake",
    "mimeType": "image/png",
    "id": "7-3",
    "$type": "IssueAttachment"
  },
  {
    "created": 1554223990031,
    "updated": 0,
    "author": {
      "name": "Jane Doe",
      "id": "1-3",
      "$type": "User"
    },
    "metaData": "rw=375&rh=226",
    "charset": null,
    "name": "older-versions.png",
    "size": 23812,
    "extension": "png",
    "url": "/youtrack/api/files/1-3/sign=fake",
    "mimeType": "image/png",
    "id": "7-6",
    "$type": "IssueAttachment"
  },
  {
    "created": 1554223990031,
    "updated": 0,
    "author": {
      "name": "Jane Doe",
      "id": "1-3",
      "$type": "User"
    },
    "metaData": "empty",
    "charset": null,
    "name": "readme-rest-docs.md",
    "size": 3503,
    "extension": "md",
    "url": "/youtrack/api/files/1-4/sign=fake",
    "mimeType": "text/markdown",
    "id": "7-7",
    "$type": "IssueAttachment"
  }
]
```

## Add a New IssueAttachment

Add an attachment to the issue.

### Required permissions

Requires permissions: Add Attachment

### Request syntax

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

|  null  |  The database ID of IssueAttachment  |
| --- | --- |

### Request parameters

|  Parameter  |  Type  |  Description  |
| --- | --- | --- |
|  fields  |  String  |  A list of IssueAttachment 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

To create an attachment in an issue, you need to send a `POST` request to an endpoint like the one specified in this sample. As the format for request differs for various languages and tools, we do not provide specific example here. Instead, see a sample step-by-step procedure on the [use case](api-usecase-attach-files.html) page.

#### Sample request

```CURL
https://example.youtrack.cloud/api/issues/2-6/attachments?fields=id,name,author(id,name),created,updated,size,mimeType,extension,charset,metaData,url
```

