Release 1.2 API
March 04, 2025
Before understanding the API release highlights, learn more about the API server URL to be used in your API requests by referring to the Know Your Qualys API Server URL section. For this API Release Notes, <qualys_base_url> is mentioned in the sample API requests.
What's New?
Asynchronous API Support
With this release, we have introduced ETM Report APIs designed for asynchronous operations. You can now request services and receive responses later, ensuring non-blocking execution.
Benefits
- Parallel Execution
Enhanced the execution capabilities to allow statements to run in parallel without interrupting the overall program flow.
- Performance Enhancements
Improvements in the asynchronous processing speed make it more suitable for CPU-intensive tasks that need to be executed simultaneously.
Submit a Finding Report Request API
New or Updated API | New |
API Endpoint | /etm/api/rest/v1/reports/findings |
Method | POST |
DTD or XSD changes | Not Applicable |
Use this API to request finding reports in JSON, CSV, or Parquet formats. Currently, only JSON format is supported.
Input ParametersInput Parameters
Parameter |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
name | Mandatory | String | Provide name of the report. |
description | Optional | String | Provide description of the report. |
reportFormat | Mandatory | String | Use JSON as report format. |
assetQql | Optional | String | Filter assets based on asset QQL query. |
findingsQql | Optional | String | Filter the Findings based of findings QQL query. |
Authorization |
Mandatory |
String |
Authorization token to authenticate to the Qualys Enterprise TruRisk Platform Prepend token with Bearer and one space. For example - Bearer authToken |
SampleSample
API Request
curl -X POST '
<qualys_base_url>/etm/api/rest/v1/reports/findings' --header 'Content-Type: application/json' --header 'Authorization: Bearer <JWT Token>' --data '{ "name": "Finding Report2123Report1234567report8", "description": "Test Report description", "reportFormat": "JSON", "assetQql" : "asset.assetID:341133", "findingsQql": "finding.vendorProductName: `Spotlight`" }'
Response
{
"id":"283593f9-b295-45d1-a37c-e04dd26b02e9",
"name":"Finding Report",
"description":"Test Report description",
"reportFormat":"JSON",
"assetQql":"",
"findingsQql":"(finding.type: Vulnerability) and ((finding.severity:`1` and finding.riskFactor.rti:`Easy_Exploit`) and (finding.typeDetected: [`Confirmed`, `Potential`, `Sensitive Content`] and finding.status: [`NEW`, `ACTIVE`, `REOPENED`] and finding.disabled: FALSE and finding.ignored: FALSE))",
"status":"REQUESTED",
"created":"2024-12-17T15:15:58.5426457",
"createdBy":{
"id":"e254d3ed-0dbf-7207-81c9-790785f0f2a5",
"firstName":"Automation",
"lastName":"User",
"username":"john_doe"
},
"updated":"2024-12-17T15:15:58.5426457",
"updatedBy":{
"id":"e254d3ed-0dbf-7207-81c9-790785f0f2a5",
"firstName":"Automation",
"lastName":"User",
"username":"john_doe"
},
"expirationDate":"2026-01-17T15:15:58.2899838"
}
Get Report Details API
New or Updated API | New |
API Endpoint | /etm/api/rest/v1/reports/{report-id} |
Method | GET |
DTD or XSD changes | Not Applicable |
Use this API to get the details of the requested report.
Input ParametersInput Parameters
Parameter |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
id | Mandatory | String | Provide a unique ID of the report. |
Authorization |
Mandatory |
String |
Authorization token to authenticate to the Qualys Enterprise TruRisk Platform Prepend token with Bearer and one space. For example - Bearer authToken |
SampleSample
API Request
curl -X GET '<qualys_base_url>
/etm/api/rest/v1/reports/0b127284-e128-4d02-a720-2748240c9f1a'--header 'Content-Type: application/json' --header 'Authorization: Bearer <JWT Token>'
Response
{ "id":"3dcbd5b3-e27e-4595-acd3-25ddb371ce33", "name":"New_Report_7da6a00c-203e-4524-b290-822a2a3a74a9", "description":"Test Report description", "reportFormat":"JSON", "findingsQql":"(finding.type: Vulnerability) and ((finding.severity:`1` and finding.riskFactor.rti:`Easy_Exploit`) and (finding.typeDetected: [`Confirmed`, `Potential`, `Sensitive Content`] and finding.status: [`NEW`, `ACTIVE`, `REOPENED`] and finding.disabled: FALSE and finding.ignored: FALSE))", "status":"COMPLETED", "created":"2024-12-17T14:44:46", "createdBy":{ "id":"e254d3ed-0dbf-7207-81c9-790785f0f2a5", "firstName":"Automation", "lastName":"User", "username":"john_doe" }, "updated":"2024-12-17T14:44:46", "updatedBy":{ "id":"e254d3ed-0dbf-7207-81c9-790785f0f2a5", "firstName":"Automation", "lastName":"User", "username":"john_doe" }, "expirationDate":"2026-01-17T14:44:45", "resources":[ "part_13620991802218968.json", "part_13214481074804456.json", "part_13214481075841998.json", "part_13621018353956655.json", "part_13621018354659556.json" ] }
Download Report Using Resource Name API
New or Updated API | New |
API Endpoint | /etm/api/rest/v1/reports/{report-id}/resources/{resource-name} |
Method | GET |
DTD or XSD changes | Not Applicable |
Use this API to download reports using resource ID. The Byte stream file is downloaded.
Input ParametersInput Parameters
Parameter |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
id | Mandatory | String | Provide a unique ID of the report. |
resource-name | Mandatory | String | Provide resource name of the report. |
Authorization |
Mandatory |
String |
Authorization token to authenticate to the Qualys Enterprise TruRisk Platform Prepend token with Bearer and one space. For example - Bearer authToken |
SampleSample
API Request
curl -X GET '<qualys_base_url>/
etm/api/rest/v1/reports/20ce9e32-fe6e-4172-b5ee-ef770591c56b/resources/part_15097524224131306.json' --header 'Content-Type: application/json' --header 'Authorization: Bearer <JWT Token>'
Response
The Byte stream file is downloaded.
Download All Resources as a Zip API
New or Updated API | New |
API Endpoint | /etm/api/rest/v1/reports/{report-id}/download |
Method | GET |
DTD or XSD changes | Not Applicable |
Use this API to download all resources in zip format.
Input ParametersInput Parameters
Parameter |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
id | Mandatory | String | Provide unique id of the report. |
Authorization |
Mandatory |
String |
Authorization token to authenticate to the Qualys Enterprise TruRisk Platform Prepend token with Bearer and one space. For example - Bearer authToken |
SampleSample
API Request
curl -X GET '<qualys_base_url>
/etm/api/rest/v1/reports/20ce9e32-fe6e-4172-b5ee-ef770591c56b/download'--header 'Content-Type: application/json' --header 'Authorization: Bearer <JWT Token>"
Response
The Byte stream .zip file is downloaded.
List of Active Reports API
New or Updated API | New |
API Endpoint | /etm/api/rest/v1/reports/list |
Method | POST |
DTD or XSD changes | Not Applicable |
Use this API to get the list of active reports.
Input ParametersInput Parameters
Parameter |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
offset |
Optional |
Integer |
Provide offset value to paginate reports. Default value 0 |
limit | Optional | Integer | Provide a number of reports to be fetched in the response. |
Authorization |
Mandatory |
String |
Authorization token to authenticate to the Qualys Enterprise TruRisk Platform Prepend token with Bearer and one space. For example - Bearer authToken |
SampleSample
API Request
curl -X POST '<qualys_base_url>
/etm/api/rest/v1/reports/list'--header 'Content-Type: application/json' --header 'Authorization: Bearer <JWT Token>' --data '{ "offset": 0, "limit": 50 }'
Response
[
{
"id":"fa6cfeab-cb31-4fe8-918b-327ae6014536",
"name":"Test Report 3",
"description":"Test Report description",
"reportFormat":"JSON",
"assetQql":"asset.criticality: 5",
"findingsQql":"finding.severity: 2",
"status":"REQUESTED",
"created":"2024-11-23T21:27:03",
"createdBy":{
"id":"e254d3ed-0dbf-7207-81c9-790785f0f2a5",
"firstName":"Automation",
"lastName":"User",
"username":"john_doe"
},
"updated":"2024-11-23T21:27:03",
"updatedBy":{
"id":"e254d3ed-0dbf-7207-81c9-790785f0f2a5",
"firstName":"Automation",
"lastName":"User",
"username":"john_doe"
},
"expirationDate":"2025-12-23T21:27:02"
}
]
Delete Report by Report ID API
New or Updated API | New |
API Endpoint | etm/api/rest/v1/reports/{report-id} |
Method | DELETE |
DTD or XSD changes | Not Applicable |
Use this API to delete reports using report ID.
Input ParametersInput Parameters
Parameter |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
id | Mandatory | String | Provide a unique ID of the report. |
Authorization |
Mandatory |
String |
Authorization token to authenticate to the Qualys Enterprise TruRisk Platform Prepend token with Bearer and one space. For example - Bearer authToken |
SampleSample
API Request
curl -X DELETE '<qualys_base_url>/
etm/api/rest/v1/reports/0b127284-e128-4d02-a720-2748240c9f1a' --header 'Content-Type: application/json' --header 'Authorization: Bearer <JWT Token>'
Response
Report is deleted.
Bulk Delete Reports API
New or Updated API | New |
API Endpoint | /etm/api/rest/v1/reports |
Method | DELETE |
DTD or XSD changes | Not Applicable |
Use this API to delete reports in bulk.
Input ParametersInput Parameters
Parameter |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
id |
Mandatory |
String |
Provide a unique ID of the report. Enter IDs separated by comma in [ ] brackets. For example,["{report-id1}","{report-id2}","{report-id3}"] |
Authorization |
Mandatory |
String |
Authorization token to authenticate to the Qualys Enterprise TruRisk Platform Prepend token with Bearer and one space. For example - Bearer authToken |
SampleSample
API Request
curl -X DELETE '<qualys_base_url>/
etm/api/rest/v1/reports' --header 'Content-Type: application/json' --header 'Authorization: Bearer <JWT Token>' --data '[ "dbc34b32-b957-449a-a357-27cf27df7eab" ]'
Response
[ { "statusCode":204, "message":"Report deleted with id - 49fed5ab-19bc-4907-a18f-ae4ae486e07d and hard delete as false." } ]
For more details on APIs, refer to API User Guide.