Applies to QAComplete 14.4, last modified on May 20, 2024

Updates the specified attachment.

Use the operation to replace the contents of an existing attachment with new contents in QAComplete.

To upload a file as a new attachment, use the …/files (POST) operation. To update only the fields of the specified attachment, use the …/files (PATCH) operation.


Basic authentication using a user’s login and password. See Authentication for details.

Security Rights

The authenticating user must belong to a security group that has the Update privilege for the entity (Defects, Tests and so on) that contains the attachment.

Request Format

To update the attachment, send a PUT request to the following URL:

URL parameters

ProjectId  :  integer, required

The ID of the project, to which the item belongs.

EntityCode  :  string, required

The type of the item, whose attachment you want to update. Possible values:

  • Releases
  • Bugs (defects)
  • FunctionalSpecs (requirements)
  • Tests
  • TestSets
  • TestSteps

EntityId  :  integer, required

The ID of the item (a defect, requirement, and so on) that has attachment.

Id  :  integer, required

The ID of the attachment you want to update.

Comments  :  string

Comments to the attachment. Can include HTML markup.

Title  :  string (max 255 chars), required

The user-friendly name (title) of the attachment to update.

Body parameters

In the request body, pass the new attachment data wrapped as multipart/form-data. Some tools and development libraries let you specify just the file name and construct the request body automatically.

A sample request:

PUT http://yourserver.com/rest-api/service/api/v1/projects/11873/Bugs/12/files/2013 HTTP/1.1
Host: yourserver.com
Connection: keep-alive
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryobxsXCltsQZ5UBfL
Accept: application/json
Authorization: Basic am9obkBleGFtcGxlLmNvbTpwQHNzd29yZA==
Content-Length: 808

Content-Disposition: form-data; name="ProjectId"

Content-Disposition: form-data; name="EntityCode"

Content-Disposition: form-data; name="EntityId"

Content-Disposition: form-data; name="Id"

Content-Disposition: form-data; name="Comments"

Comment 1
Content-Disposition: form-data; name="Title"

New Data
Content-Disposition: form-data; name="File"; filename="Data.txt"
Content-Type: application/octet-stream

... the rest of the data.txt file contents ...

A sample request made by using cURL:

curl -u [email protected]:p@ssword -F [email protected] -H "Accept: application/json" http://yourserver.com/service/api/v1/projects/11873/Bugs/12/files/2013

Response Format

On success, the operation responds with HTTP status code 200 and returns a JSON object with the updated attachment information.

A sample response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 314

  "attachment_type_code": "File",
  "file_name": "data.txt",
  "title": "New Data",
  "comments": "Comment 1",
  "data_created": "2015-08-27T11:48:26.9370000",
  "data_updated": "2015-08-27T11:53:51.0000000",
  "entity_code": "Bugs",
  "entity_id": 12,
  "update_user_id": "24663",
  "user_name": "Smith, John"

Error responses

If the operation fails, it returns the appropriate status code and (optionally) the error description in the response body.

If the project with the specified ProjectId does not exist or the authenticating user does not have rights to access the project, the operation returns the Access is denied error.

If an item with the specified EntityCode or EntityId, or an attachment with the specified Id does not exist, the operation returns the File or directory not found error.

If the Title you specify for the attachment exceeds the maximum value size, the operation returns an internal server error.

See Also

Files (Attachments) Resources

Highlight search results