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

Updates the specified automation attachment in a QAComplete test.

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

To update individual fields of an existing attachment, use the …/tests/{TestId}/automations/{Agent}/attachment (PATCH) operation.

To add a new attachment, use the …/tests/{TestId}/automations/{Agent}/attachment (POST) 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 Test Library.

Request Format

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

URL parameters

ProjectId  :  integer, required

The ID of the project.

TestId  :  integer, required

The ID of the needed test.

Agent  :  string, required

The URL-encoded or the short name of the automation agent (test runner).

Currently, REST API supports the following agents:

Agent URL-encoded Name Short Name
TestComplete/TestExecute TestComplete%2FTestExecute testcomplete
JUnit (Selenium) JUnit%20%28Selenium%29 junit
NUnit (Selenium) NUnit%20%28Selenium%29 nunit
TestNG (Selenium) TestNG%20%28Selenium%29 testng
ReadyAPI / SoapUI OS ReadyAPI+%2F+SoapUI+OS readyapi

The agent names are case-insensitive.

Link  :  string

The URL or UNC path to the attachment.

Comment  :  string

Comment to the attachment. Can include HTML markup.

File  :  

The file to attach.

Body parameters

In the request body, pass the 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/v2/projects/11873/tests/2696/automations/nunit/attachment?Link=http%3A%2F%2Fexample.com%2samples%2Forders.zip HTTP/1.1
Host: yourserver.com
Connection: keep-alive
Content-Type: application/json
Accept: application/json
Authorization: Basic am9obkBleGFtcGxlLmNvbTpwQHNzd29yZA==
Content-Length: 1002

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

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

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

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

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

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

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

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

Content-Disposition: form-data; name="File"; filename="attachment.zip"
Content-Type: application/octet-stream

...the data 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/v2/projects/11953/tests/2693/automations/nunit/attachment

Response Format

If successful, the operation responds with HTTP status code 200 and returns a JSON object with information about the updated attachment.

A sample response:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 265

        "file_name": "attachment.zip",
        "link": "http%3A%2F%2Fexample.com%2samples%2Forders.zip",
        "file_format_code": "PKZip File",
        "date_created": "2016-07-14T12:10:34.3070000",
        "date_updated": "2016-07-14T12:10:34.3070000",
        "update_user_id: 24561,
        "user_name": "Murray, Robert "

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 the test with the specified Id does not exist, the operation returns the File or directory not found error.

See Also

Automation Attachments Resources

Highlight search results