Get Started with VMDR OT APIs

This help is intended for application developers who use the Qualys VMDR OT API.

Qualys API Framework

Learn the basics about making API requests. The base URL depends on the platform where your Qualys account is located. The Qualys VMDR OT API uses the following framework:

Request URL

The URL for making API requests respects the following structure:

https://<baseurl>/<module>/<object>/<object_id>/<operation>

Refer to the following table for the field description.

Field Description
<baseurl> The Qualys API server URL that you should use for API requests depends on the platform where your account is located. The base URL for Qualys US Platform 1 is: https:///gateway.qg1.apps.qualys.com
<module> The API module. For the VMDR OT API, the module is: “ot”.
<object> The module-specific object.
<object_id> (Optional) The module-specific object ID, if appropriate.
<operation> The request operation, such as count.

Qualys API Gateway URL

The Qualys API URL you should use for API requests depends on the Qualys platform.

Click here to identify your Qualys platform and get the API URL

This documentation uses the API gateway URL for Qualys US Platform 1 (https://gateway.qg1.apps.qualys.com) in sample API requests. If you are on another platform, please replace this URL with the appropriate gateway URL for your account.

Introduction to VMDR OT API Paradigm 

Get tips on using the Curl command-line tool to make API requests. Every API request must authenticate using a JSON Web Token (JWT) obtained from the Qualys Authentication API.

Authentication

You must authenticate to the Qualys Cloud Platform using Qualys account credentials (user name and password) and get the JSON Web Token (JWT) before you can start using the VMDR OT APIs. Use the Qualys Authentication API to get the JWT.

Example Authentication Curl Request:

API Request

curl -X POST 
"https://<QualysBaseURL>/auth" 
-H "Content-Type: application/x-www-form-urlencoded" 
-d "username=value1&password=value2&token=true" 
    

The following table explains the various components of this request:

QualysBaseURL It is the base URL for the Qualys API server where your account is located. 
The base URL for Qualys US Platform 1 is: https:///gateway.qg1.apps.qualys.com
value1 and value2 value1 is the username and value 2 is the password of the user account for which you want to fetch Asset Management data.
token It must be true.
Content-Type It must be application/x-www-form-urlencoded.

Using Curl

Curl is a multi-platform command-line tool used to transfer data using multiple protocols. This tool is supported on many systems, including Windows, Unix, Linux and Mac. In this document Curl is used in the examples to build Qualys API requests using the HTTP over SSL (https) protocol, which is required.

Want to learn more? Visit https://curl.haxx.se/

The following Curl options are used according to different situations:

Field Description
-X “POST”

The post method is required for Qualys Authentication API.

-H “Authorization: Bearer <token>” This option is used to provide a custom HTTP request header parameter for authentication. Provide the JSON Web Token (JWT) received from Qualys authentication API in the following format:

Authorization: Bearer <token>

For information about Qualys authentication API, see Authentication

The following sample shows a typical Curl request using the options mentioned and how they interact.

Curl Request

curl -X POST  
"https://gateway.qg1.apps.qualys.com/auth" 
-H "Content-Type: application/x-www-form-urlencoded" 
-d "username=john_doe&password=john_doe&token=true"
  

Permissions

To make calls using the VMDR OT API, you must have the VMDR OT.API.ACCESS permission.

Note: To access all the data, you need to have both UI and API permissions.

API Rate Limits

The Qualys API enforces limits on the API calls a customer can make based on their subscription settings. The limits apply to using all Qualys APIs except the “auth” API (JWT Token Generation API). Default API control settings are provided by the service. Note these settings may be customized per subscription by Qualys Support. The rate count and period are calculated dynamically each time an API call is received. The rate period represents a rolling window when API calls are counted.

API Controls Definition

SampleSample 

Curl Request

curl -X GET -H "Accept: */*" -H "Authorization: Bearer <JWT Token>" -H
"Content-Type: application/json" -i
"https://gateway.qg1.apps.qualys.com/ot/v1/host/list"  
    

Note: Provide "-i" in the curl request, as shown in the example, returns the response headers, including the rate limit related parameters.

After executing a curl request, check the following parameters in response headers to check the rate-limit status:
X-RateLimit-Remaining: 0
X-RateLimit-ToWait-Sec: 300
X-RateLimit-Window-Sec: 3600
X-RateLimit-Limit: 300

Sample HTTP Response Headers

Sample 1: Normal API call (API call not blocked)

HTTP/1.1 200 OK
transfer-encoding: chunked
X-RateLimit-Remaining: 290
X-RateLimit-Window-Sec: 3600
X-RateLimit-Limit: 300
count: 19788
vary: accept-encoding
Content-Type: application/json
Date: Mon, 06 Feb 2023 08:18:01 GMT
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1 ; mode=block
Referrer-Policy: no-referrer

Sample 2: API Call Blocked - Rate Limit exceeded

HTTP/1.1 429 Too Many Requests
X-RateLimit-Remaining: 0
X-RateLimit-ToWait-Sec: 2050
X-RateLimit-Window-Sec: 3600
X-RateLimit-Limit: 300
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1 ; mode=block
Referrer-Policy: no-referrer
content-length: 0

User Scoping for APIs

The user will get a response of the assets as per scope using list APIs. Typically Manager user has access to more assets than the reader user. So, the Reader user won’t be able to get responses for the APIs requested for unauthorized assets.
For example: 
If a Manager user has access to 100 assets: List API will show details of all these 100 assets. Now, consider that the Manager user creates a ‘Reader’ sub-user and assigns only 50 assets to this user, and when Reader executes APIs, the response will contain data of only 50 assets and not all 100 assets. 

Get API Notifications

Subscribe to our API Notifications RSS Feeds for announcements and the latest news.

From our Community

Join our Community

API Notifications RSS Feeds