Patch Management Release 3.9 API
August 31, 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.
Enhanced API: Get a List of Assets
New or Updated API | Updated |
API Endpoint | /pm/v1/assets |
Method | GET |
DTD or XSD changes | Not Applicable |
We have added new parameters: installedPatches, missingPatches, and interface.ipv6Address to the API response to enhance the Get a List of Assets API. These new fields provide the asset details such as IPv6 address, missing patches, and installed patches for the assets enabled for your Patch Management within your scope.
Sample - Get List of Linux AssetsSample - Get List of Linux Assets
API Request
curl -X 'GET' \
'<qualys_base_url>/pm/v1/assets?platform=Linux’ \
-H 'accept: application/json' \
-H 'Authorization: Bearer <<jwt token>>’
API Response
[ { "name": "rhel8r6-vm-live", "id": "968fa80c-df51-4e6a-9279-b26653cec986", "operatingSystem": "Red Hat Enterprise Linux 8.6", "lastLoggedOnUser": "root", "assetStatus": "Failed", "scanStatus": "Scanned", "statusCode": 20212, "statusDateTime": 1753435366000, "scanDateTime": 1753425259261, "hardware": { "model": "VMware7,1", "manufacturer": "VMware, Inc." }, "tags": [ { "id": "909075bb-a86b-4bfc-8936-2644f5b66ff6" }, { "id": "1f49f584-6881-4408-b139-01149e730bdb" } ], "interfaces": [ { "interfaceName": "ens192", "macAddress": "00:50:56:aa:e0:e6", "ipv6Address": null, "address": "10.115.127.59", "gatewayAddress": null }, { "interfaceName": "virbr0", "macAddress": "52:54:00:06:68:83", "ipv6Address": null, "address": "192.168.122.1", "gatewayAddress": null }, { "interfaceName": "ens192", "macAddress": "00:50:56:aa:e0:e6", "ipv6Address": "fe80:0:0:0:250:56ff:feaa:e0e6", "address": null, "gatewayAddress": null } ], "installedPatches": [], "missingPatches": [ { "id": "4a230d59-259a-3598-9ef3-0c36765683ae" }, { "id": "3ebbbc04-8c60-387a-9bc3-d79261440ea6" }, ............. { "id": "864fb9d2-bffe-3da8-92c8-3a1263b39c70" } ], "version": "8.6", "architecture": "x86_64", "osIdentifier": "RHEL8", "platform": "Linux", "agentVersion": "007.002.000.038", "isolation": null, "activatedModules": [ "MTG", "PM" ], "osNotSupportedForModules": [], "missingCount": 110, "installedCount": 0 } ]
Enhanced API: Get a List of All Patch Management Assets
New or Updated API | Updated |
API Endpoint |
/pm/v1/assets |
Method | POST |
DTD or XSD changes | Not Applicable |
We have added new parameters: installedPatches, missingPatches, and interface.ipv6Address to the API response to enhance the Get List of all Patch management Assets API. These new fields provide the asset details such as IPv6 address, missing patches, and installed patches for the assets. This API fetches the list of more than ten thousand assets enabled for your Patch Management subscription.
Sample - Get a List of All Patch Management AssetsSample - Get a List of All Patch Management Assets
API Request
curl -X 'POST' \
'<qualys_base_url>/pm/v1/assets?sortOrder=ASC&platform=Linux' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <<jwt token>>’\
-H 'Content-Type: application/json' \
-d
API Response
[{
"interfaces": [
{
"ipv6Address": "fe80:0:0:0:1dcc:3a12:56d8:73f"
},
{
"address": "10.0.203.124"
}
],
"scanStatus": "Scanned",
"operatingSystem": "Red Hat Enterprise Linux Server 9.2",
"version": "9.2",
"platform": "Linux",
"tags": [
"236bdc33-a0c7-4baf-8ce3-fc89ad5302ce",
"6d1cd4b6-378d-4c95-ad47-f459882e7c35",
"7f14573f-b7b7-4393-8457-d1a10f058a5a",
"1e7aaeae-62fa-4e6c-82c5-99038fc8203b",
"ce1e4d6a-7119-4177-9bcc-0b31c39aad1b"
],
"installedPatchCount": 1,
"missingPatches": [
{
"id": "fb9f585c-5773-30b6-8922-274e47a80ebc"
},
{
"id": "cdbdb949-5153-3511-9f54-eced744470ec"
},
{
"id": "8f378f67-98d3-30a3-bcff-ff6eda730f46"
},
{
"id": "5b4c8d77-f012-3494-80e2-fa4fb5c2bcd4"
},
{
"id": "87c17496-7b00-3652-99b9-ef28cc4adf0d"
}
],
"osIdentifier": "RHEL9",
"missingPatchCount": 5,
"activatedModules": [
"PM"
],
"lastLoggedOnUser": "",
"scanDateTime": 1752821490000,
"statusDateTime": 1752821490000,
"name": "PMUI_AUTOMATION_MOCK_ASSET_LINUX",
"agentVersion": "009.002.000.000",
"id": "9bf5e773-177e-467c-a79a-1c345546be32",
"installedPatches": [
"5e4ebe5d-9d46-3945-aa8b-36e123075b5a"
],
"hardware": {},
"architecture": "x86_64",
"status": "Scanned",
"statusCode": 20211,
"osNotSupportedForModules": []
}
]
Enhanced API: Get Deployment Job Details by Job ID
New or Updated API | New |
API Endpoint | /pm/v1/deploymentjob/{deploymentJobId} |
Method | GET |
DTD or XSD changes | Not Applicable |
With this release, we have enhanced the Get Deployment Job Details by Job ID API to include new parameters to create a default job. This API gets the details of the default deployment job based on the specified deployment job ID.
Input ParametersInput Parameters
Parameter |
Mandatory/ |
Data Type |
Description |
---|---|---|---|
isDefaultJob | Mandatory | Boolean | Specify the value as true or false. If the values is set true, a default deployment job is created. |
onAssetActivation | Mandatory | Boolean | Specify the value as true or false. If you set this value as true, the default job will run on the assets that are activated, and part of the tag included in the job, |
onAssetInactiveForXDays | Mandatory | Integer | Specify the number of days for which the asset is inactive. Note: The value must be between 3 to 180. |
Sample - Get Default Deployment Job Details by Job IDSample - Get Default Deployment Job Details by Job ID
API Request
curl -X 'PATCH' \
'<qualys_base_url>/pm/v1/deploymentjob/4730541c-091e-443c-95d3-c8a6f34bc4bd' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <JWT_Token>' \
-H 'Content-Type: application/json' \
-d
API Body
{
"customerId": "160bdd9e-332a-5f68-828f-e2773358ff10",
"id": "b288b6ff-3fad-4e8e-be05-f1778cc36022",
"schemaVersion": "1.0",
"name": "Copy_of_e_1754050650895",
"description": "",
"type": "Install",
"status": "Disabled",
"coAuthorUserIds": null,
"scheduleType": "Conditional",
"startDateTime": null,
"recurring": false,
"timezoneType": null,
"timezone": null,
"createdBy": {
"user": {
"id": "ce0bb83b-e158-5a18-83b4-9dfc3079fe99",
"name": "quaysxpb1",
"fullName": "Pratik Bhattad"
},
"date": 1754050653698
},
"updatedBy": {
"user": null,
"date": null
},
"deletedBy": {
"user": null,
"date": null
},
"assetCount": null,
"taggedAssetCount": 0,
"applicableAssetCount": 0,
"totalAssetCount": null,
"assetResultReceivedCount": null,
"jobCategory": 3,
"jobTriggerStatus": null,
"completionPercent": null,
"jobSource": 2,
"readOnly": false,
"subCategory": "Patch",
"platform": "Windows",
"assetIds": null,
"assetTagIds": [
"19493e14-ff9d-48ec-bf27-eb0cfbc43cd9"
],
"matchAllTagIds": null,
"exclusionTagIds": null,
"exclusionAssetIds": null,
"approvedPatches": null,
"disabledPatches": null,
"patchCount": 0,
"recurringWeekDays": "",
"dayOfMonth": null,
"recurringDayOfMonth": null,
"recurringWeekDayOfMonth": null,
"timeout": -1,
"timeoutUnit": "HOURS",
"preDeployment": {
"userMessage": "",
"description": "",
"deferment": {
"count": 3,
"interval": 1,
"intervalUnit": "HOURS"
}
},
"duringDeployment": {
"userMessage": "",
"description": ""
},
"postDeployment": {
"suppressReboots": false,
"rebootHonorOnUserLogin": false,
"rebootOption": {
"userMessage": "",
"description": "",
"deferment": {
"count": 3,
"interval": 1,
"intervalUnit": "HOURS"
}
},
"rebootCountdown": {
"interval": 15,
"intervalUnit": "MINUTES",
"userMessage": "Reboot countdown started",
"description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
},
"onComplete": {
"userMessage": "",
"description": "",
"alwaysShowCompletedPrompt": false
}
},
"opportunisticDownloads": false,
"filterType": "Any",
"exclusionFilterType": "Any",
"minimizeWindow": false,
"dynamicPatchesQQL": "",
"isDynamicPatchesQQL": false,
"dynamicQQLType": 1,
"assetDetectionsQQL": "",
"continueOnPatchFailure": false,
"preDeployActions": null,
"postDeployActions": null,
"monthlyRecurringType": null,
"patchTuesdayPlusXDays": null,
"recurringLastDayOfMonth": false,
"notification": null,
"linkedJobId": null,
"linkedToJob": null,
"linkedJobs": null,
"jobStartCountdown": null,
"passwordAction": null,
"additionalDynamicQQLType": null,
"additionalDynamicPatchesQQL": null,
"downloadRandomizeTime": 0,
"downloadRandomizeTimeUnit": "MINUTES",
"customPatchURLId": null,
"isVulnContext": false,
"remediationQids": null,
"isAssetImported": false,
"enableReattemptFailedPatches": false,
"reattemptFailedPatches": {
"noOfReattempts": 0,
"exponentialBackoffInterval": 0
},
"allowExecutionWithPendingReboot": false,
"isDefaultJob": true,
"defaultJobConfiguration": {
"onAssetActivation": false,
"onAssetInactiveForXDays": 5
}
}
API Response
Response : 200
Enhanced API: Create a Deployment Job
New or Updated API | Updated |
API Endpoint | /pm/v1/deploymentjob/ |
Method | POST |
DTD or XSD changes | Not Applicable |
With this release, we have enhanced the Create Deployment Job API to include new parameters to create a default deployment job. This API creates a default deployment job with the defined configurations.
Input ParametersInput Parameters
Parameter |
Mandatory/ |
Data Type |
Description |
---|---|---|---|
isDefaultJob | Mandatory | Boolean | Specify the value as true or false. If the values is set true, a default deployment job is created. |
onAssetActivation | Mandatory | Boolean | Specify the value as true or false. If you set this value as true, the default job will run on the assets that are activated, and part of the tag included in the job, |
onAssetInactiveForXDays | Mandatory | Integer | Specify the number of days for which the asset is inactive. Note: The value must be between 3 to 180. |
Sample - Create Default Deployment JobSample - Create Default Deployment Job
API Request
curl -X 'POST' \ '<qualys_base_url>/pm/v1/deploymentjob' \ -H 'accept: application/json' \ -H 'Authorization: Bearer <JWT_token> -H 'Content-Type: application/json' \ -d
API Body
{ "dynamicPatchesQQL": "patch.downloadMethod:Automatic ", "isDynamicPatchesQQL": true, "dynamicQQLType": "1", "assetCount": 0, "assetTagIds": ["b27dd179-be86-4c44-bba1-06654d1bf4fa"], "assetDetectionsQQL": "", "duringDeployment": { "userMessage": "", "description": "" }, "name": "windows_default_job__1", "description": "", "postDeployment": { "suppressreboots": false, "rebootHonorOnUserLogin": false, "onComplete": { "userMessage": "", "description": "", "alwaysShowCompletedPrompt": false }, "rebootCountdown": { "interval": 15, "intervalUnit": "MINUTES", "userMessage": "Reboot countdown started", "description": "The system reboot is initiated. It will reboot automatically after the timer countdown." }, "rebootOption": { "deferment": { "count": 3, "interval": 1, "intervalUnit": "HOURS" }, "userMessage": "", "description": "" } }, "preDeployment": { "deferment": { "count": 3, "interval": 1, "intervalUnit": "HOURS" }, "userMessage": "", "description": "" }, "scheduleType": "Conditional", "schemaVersion": "1.0", "startDateTime": null, "status": "Disabled", "opportunisticdownloads": false, "minimizeWindow": false, "enableReattemptFailedPatches": false, "reattemptFailedPatches": { "noOfReattempts": 0, "exponentialBackoffInterval": 0 }, "allowExecutionWithPendingReboot": false, "customPatchURLId": null, "timeout": -1, "timeoutUnit": "HOURS", "downloadRandomizeTime": 0, "downloadRandomizeTimeUnit": "MINUTES", "timezone": null, "timezoneType": null, "type": "Install", "filterType": "Any", "exclusionFilterType": "Any", "exclusionTagIds": [], "matchAllTagIds": [], "coAuthorUserIds": [], "platform": "Windows", "jobCategory": null, "jobSource": 2, "remediationQids": [], "isVulnContext": false, "subCategory": "Patch", "isDefaultJob": true, "defaultJobConfiguration": { "onAssetActivation": true, "onAssetInactiveForXDays": 3 } }
API Response
API Response : 201
Enhanced API: Update Deployment Job
New or Updated API | Updated |
API Endpoint | /pm/v1/deploymentjob/UPDATE/{deploymentJobId} |
Method | PATCH |
DTD or XSD changes | Not Applicable |
With this release, we have enhanced the Update Deployment Job API, in which you can edit a default job to update the configurations.
Note: You can update a default job only if it is in a disabled state.
Input ParametersInput Parameters
Parameter |
Mandatory/ |
Data Type |
Description |
---|---|---|---|
isDefaultJob | Mandatory | Boolean | Specify the value as true or false. If the values is set true, a default deployment job is created. |
onAssetActivation | Mandatory | Boolean | Specify the value as true or false. If you set this value as true, the default job will run on the assets that are activated, and part of the tag included in the job, |
onAssetInactiveForXDays | Mandatory | Integer | Specify the number of days for which the asset is inactive. Note: The value must be between 3 to 180. |
Sample - Update Default Deployment JobSample - Update Default Deployment Job
API Request
curl -X 'PATCH' \
'<qualys_base_url>/pm/v1/deploymentjob/update/43f9b149-17eb-41b5-8590-9d9df1d85edd' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <JWT_Token>
-H 'Content-Type: application/json' \
-d '
API Body
{
"name": "windows_default_job__1",
"description": "",
"type": "Install",
"status": "Disabled",
"coAuthorUserIds": null,
"scheduleType": "Conditional",
"startDateTime": null,
"recurring": null,
"timezoneType": null,
"timezone": null,
"assetCount": null,
"taggedAssetCount": 0,
"applicableAssetCount": 0,
"totalAssetCount": null,
"assetResultReceivedCount": null,
"jobCategory": 3,
"jobTriggerStatus": null,
"completionPercent": null,
"jobSource": 3,
"readOnly": false,
"subCategory": "Patch",
"platform": "Windows",
"assetIds": null,
"assetTagIds": [
"b27dd179-be86-4c44-bba1-06654d1bf4fa"
],
"matchAllTagIds": null,
"exclusionTagIds": null,
"exclusionAssetIds": null,
"approvedPatches": null,
"disabledPatches": null,
"patchCount": 0,
"recurringWeekDays": null,
"dayOfMonth": null,
"recurringDayOfMonth": null,
"recurringWeekDayOfMonth": null,
"timeout": -1,
"timeoutUnit": "HOURS",
"preDeployment": {
"userMessage": "",
"description": "",
"deferment": {
"count": 3,
"interval": 1,
"intervalUnit": "HOURS"
}
},
"duringDeployment": {
"userMessage": "",
"description": ""
},
"postDeployment": {
"suppressReboots": false,
"rebootHonorOnUserLogin": false,
"rebootOption": {
"userMessage": "",
"description": "",
"deferment": {
"count": 3,
"interval": 1,
"intervalUnit": "HOURS"
}
},
"rebootCountdown": {
"interval": 15,
"intervalUnit": "MINUTES",
"userMessage": "Reboot countdown started",
"description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
},
"onComplete": {
"userMessage": "",
"description": "",
"alwaysShowCompletedPrompt": false
}
},
"opportunisticDownloads": null,
"filterType": "Any",
"exclusionFilterType": "Any",
"minimizeWindow": false,
"dynamicPatchesQQL": "patch.downloadMethod:Automatic ",
"isDynamicPatchesQQL": true,
"dynamicQQLType": 1,
"assetDetectionsQQL": "",
"continueOnPatchFailure": false,
"preDeployActions": null,
"postDeployActions": null,
"notification": null,
"linkedJobId": null,
"linkedToJob": null,
"linkedJobs": null,
"jobStartCountdown": null,
"passwordAction": null,
"additionalDynamicQQLType": null,
"additionalDynamicPatchesQQL": null,
"downloadRandomizeTime": 0,
"downloadRandomizeTimeUnit": "MINUTES",
"customPatchURLId": null,
"isVulnContext": false,
"remediationQids": null,
"isAssetImported": false,
"enableReattemptFailedPatches": false,
"reattemptFailedPatches": {
"noOfReattempts": 0,
"exponentialBackoffInterval": 0
},
"allowExecutionWithPendingReboot": false,
"isDefaultJob": true,
"defaultJobConfiguration": {
"onAssetActivation": true,
"onAssetInactiveForXDays": 4
}
}
API Body
API Response : 200
Enhanced API: Get Mitigation Job Action Result By Job ID
New or Updated API | Updated |
API Endpoint | /mtg/v1/deploymentjob/{deploymentjobid}/deploymentjobresult/actions |
Method | POST |
DTD or XSD changes | Not Applicable |
In this release, we have removed the pageSize and pageNumber parameters from the Get Mitigation Job Action result by Job ID API. This API will directly fetch all the job action results for the specified job ID and agent UUID.
Note: There is no change in the sample API request and response.
Enhanced APIs with New QQL Search Tokens
As a part of QQL token standardization, we have renamed common and Patch Management-specific tokens. The standardization helps reuse and customize the QQL queries across all Qualys applications, leading to a consistent user experience. The standardized tokens make it easier to copy and reuse the search query from one application to another, eliminating the need to remember multiple token names for different applications and similar searches.
The following list presents the Patch Management APIs, where the API request must change based on the updated QQL tokens.
For the complete list of old and new token mappings, see Old and New Token Mappings.
API Name | API Endpoint |
---|---|
Get patch details for Windows and Linux platforms | /pm/v1/patchcatalog/patches |
Get patch count | /pm/v1/patches/count |
Get patches for a specific customer | /pm/v1/patches |
Get a list of your patch management assets | /pm/v1/assets |
Get deployment by Job Id for a specific job | /pm/v1/deploymentjob/{deploymentJobId} |
Create a deployment job | /pm/v1/deploymentjob |
Update Deployment Job for the given customer | /pm/v1/deploymentjob/update/{deploymentJobId} |
Get a deployment job list | /pm/v1/deploymentjobs |
Get a list of all deployment jobs for your subscription | /pm/v1/deploymentjobs/summary |
Get deployment job summary | GET/pm/v1/deploymentjob/{deploymentJobId}/deploymentjobresult/summary |
Get deployment job result summary | POST/pm/v1/deploymentjob/{deploymentJobId}/deploymentjobresult/summary |
Get a list of deployment jobs that can be used to fetch patches from | /pm/v1/deploymentjobs/availableToLink |
Generate the asset report | /pm/v1/report/asset |
Generate a deployment job progress report for the Windows and Linux platforms | /pm/v1/report/jobprogress/{deploymentJobId} |
Generate the patches report | /pm/v1/report/patch |
Get a mitigation deployment job list | /mtg/v1/deploymentjobs |
Get mitigation deployment job results summary | /mtg/v1/deploymentjob/{deploymentJobId}/deploymentjobresult/summary |
Get mitigation deployment job action result for the given agent | /mtg/v1/deploymentjob/{deploymentjobid}/deploymentjobresult/actions |
UI Release Updates
To know in detail about the UI features, enhancements and issues addressed, see Patch Management Release 3.9.