Qulays Patch Management Release 3.5 API

April 21, 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 Linux Deployment Job APIs

Enhanced API: Create a Linux Deployment Job

New or Updated API Updated
API Endpoint  /pm/v1/deploymentjob
Method POST
DTD or XSD changes Not Applicable

In earlier release, certain errors occurred in Linux patching as the package cache was not updated correctly, due to which users had to run commands to update the cache. 

With this release, a new feature Linux Package Cache Update is introduced as a toggle in the Linux deployment creation job. With this enhancement in API, the script updates the package repository that performs the Linux deployment successfully. 

Input ParametersInput Parameters

Parameter

Sub Parameters

Mandatory/
Optional

Data Type

Description

preDeployActions action Optional String Specify the action. 
For example, Run Script
  actionItem Optional String Specify the actionItem.
For example, makeCache Pre-Action
  defaultScriptType Optional String Specify the default script type.
For example, MakeCache
  scriptType Optional String Specify the scriptType.
For example: sh
  script Optional String The value must be empty. 
For example: script: " "

Sample - Create a Linux Deployment JobSample - Create a Linux Deployment Job

API Request

curl -X POST "<qualys_base_url>/pm/v1/deploymentjob" 
-H "accept: application/json" 
-H "Authorization: Bearer <<jwt token>>"

Request Body

{
    "approvedPatches": [],
    "dynamicPatchesQQL": "",
    "isDynamicPatchesQQL": false,
    "additionalDynamicPatchesQQL": "",
    "additionalDynamicQQLType": "",
    "dynamicQQLType": 1,
    "linkedJobId": "",    
    "assetIds": [
        "08a028e6-7e1d-4dbf-b040-48d9059dee08"
    ],
    "isAssetImported": false,
    "assetFilePath": null,
    "assetTagIds": [],
    "deleted": false,
    "duringDeployment": {
        "userMessage": "",
        "description": ""
    },
    "name": "Demo_MakeCache",
    "description": "",
    "createdBy": null,
    "patchCount": 0,
    "postDeployment": {
        "suppressreboots": false,
        "onComplete": {
            "userMessage": "",
            "description": ""
        }
    },
    "preDeployment": {
        "deferment": {
            "count": 3,
            "interval": 1,
            "intervalUnit": "HOURS"
        },
        "userMessage": "",
        "description": ""
    },
    "recurring": false,
    "dayOfMonth": null,
    "recurringLastDayOfMonth": false,
    "recurringDayOfMonth": null,
    "patchTuesdayPlusXDays": null,
    "monthlyRecurringType": null,
    "recurringWeekDayOfMonth": null,
    "recurringWeekDays": "",
    "scheduleType": "On-demand",
    "schemaVersion": "1.0",
    "startDateTime": null,
    "status": "Enabled",
    "opportunisticDownloads": false,
    "minimizeWindow": false,
    "timeout": -1,
    "timeoutUnit": "HOURS",
    "timezone": null,
    "timezoneType": null,
    "type": "Install",
    "filterType": "Any",
    "exclusionFilterType": "Any",
    "exclusionTagIds": [],
    "matchAllTagIds": [],
    "coAuthorUserIds": [],
    "platform": "Linux",
    "continueOnPatchFailure": false,
    "exclusionAssetIds": [],
    "jobCategory": null,
    "jobSource": 2,
    "preDeployActions": [
        {
            "action": "Run Script",
            "params": {
                "actionItem": "makecache Pre-Action",
                "remediationScope": false,
                "defaultScriptType": "MakeCache"
            },
            "scriptType": "sh",
            "script": ""
        }
    ],
    "postDeployActions": [],
    "notification": null,
    "remediationQids": [],
    "isVulnContext": false,
    "subCategory": "Patch",
    "chainedJobRule": [],
    "hostIsolationConfig": null,
    "quarantineAssetRequestNotification": null
}

API Response

{
  "customerId": "8ac1558c-cbdf-c133-80c6-0fcf7d68e79c",
  "id": "8df80cf0-e24c-4d7c-877f-10700250c906",
  "schemaVersion": "1.0",
  "name": "Demo_MakeCache",
  "type": "Install",
  "status": "Enabled",
  "assetIds": [
    "08a028e6-7e1d-4dbf-b040-48d9059dee08"
  ],
  "assetTagIds": [],
  "matchAllTagIds": [],
  "exclusionTagIds": [],
  "exclusionAssetIds": [],
  "coAuthorUserIds": [],
  "approvedPatches": [],
  "disabledPatches": null,
  "patchCount": 0,
  "scheduleType": "On-demand",
  "startDateTime": "2025-3-19 04:59:17 AM",
  "recurring": false,
  "recurringWeekDays": "",
  "dayOfMonth": null,
  "recurringDayOfMonth": null,
  "recurringWeekDayOfMonth": null,
  "timezoneType": "SPECIFIC_TZ",
  "timezone": "UTC",
  "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": "",
      "description": ""
    },
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    }
  },
  "description": "",
  "createdBy": {
    "user": {
      "id": "9ea81ebb-1830-5f23-8389-2921ae95238f",
      "name": "quaysxkm14",
      "fullName": "Karan Mehta"
    },
    "date": 1742360357346
  },
  "updatedBy": {
    "user": null,
    "date": null
  },
  "deletedBy": {
    "user": null,
    "date": null
  },
  "assetCount": null,
  "opportunisticDownloads": false,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "taggedAssetCount": 0,
  "minimizeWindow": false,
  "dynamicPatchesQQL": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "platform": "Linux",
  "continueOnPatchFailure": false,
  "preDeployActions": [
    {
      "actionId": "926ff25c-e1c4-4613-a446-53268fed1b52",
      "action": "Run Script",
      "actionType": "predeploy",
      "params": {
        "actionItem": "makecache Pre-Action",
        "timeout": 180,
        "remediationScope": false,
        "defaultScriptType": "MakeCache"
      },
      "script": "default/MakeCache/makecache",
      "scriptType": "sh",
      "actionLinkedToJob": false
    }
  ],
  "postDeployActions": null,
  "applicableAssetCount": 1,
  "monthlyRecurringType": null,
  "patchTuesdayPlusXDays": null,
  "recurringLastDayOfMonth": false,
  "jobCategory": 3,
  "jobTriggerStatus": null,
  "completionPercent": null,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "jobSource": 3,
  "readOnly": false,
  "notification": null,
  "linkedJobId": null,
  "linkedToJob": null,
  "linkedJobs": null,
  "jobStartCountdown": null,
  "passwordAction": null,
  "subCategory": "Patch",
  "additionalDynamicQQLType": null,
  "additionalDynamicPatchesQQL": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "customPatchURLId": null,
  "isVulnContext": false,
  "remediationQids": [],
  "isAssetImported": false,
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "enableReattemptFailedPatches": null,
  "reattemptFailedPatches": null
}

Enhanced API: Update Linux Deployment Job

New or Updated API Updated
API Endpoint  /pm/v1/deploymentjob/update/{deploymentJobId}
Method PATCH
DTD or XSD changes Not Applicable

In this release, this API is updated to include the Linux Package Cache Update details in the existing Linux deployment job for a specific job ID. 

Input ParametersInput Parameters

Parameter

Sub Parameters

Mandatory/
Optional

Data Type

Description

preDeployActions action Optional String Enter action
  actionItem Optional String Specify the action item.
For example: makecache Pre-Action
  defaultScriptType Optional String Specify the defaultScriptType.
For example: MakeCache
  scriptType Optional String Provide script type.
For example: sh
  script Optional String The value must be empty. 
For example: script: " "

Sample - Update a Linux Deployment JobSample - Update a Linux Deployment Job

API Request

curl -X PATCH
"<qualys_base_url>/pm/v1/deploymentjob/update/16be09aa-5415-4a58-8295-8a4ac8db6f26" 
-H "accept: application/json" 
-H "Authorization: <<Jwt Token>>" 
-H "Content-Type: application/json"

Request Body

{
    "approvedPatches": [],
    "dynamicPatchesQQL": "",
    "isDynamicPatchesQQL": false,
    "additionalDynamicPatchesQQL": "",
    "additionalDynamicQQLType": "",
    "dynamicQQLType": 1,
    "linkedJobId": "",    
    "assetIds": [
        "08a028e6-7e1d-4dbf-b040-48d9059dee08"
    ],
    "isAssetImported": false,
    "assetFilePath": null,
    "assetTagIds": [],
    "deleted": false,
    "duringDeployment": {
        "userMessage": "",
        "description": ""
    },
    "name": "Demo_Job_MakeCache",
    "description": "",
    "createdBy": null,
    "patchCount": 0,
    "postDeployment": {
        "suppressreboots": false,
        "onComplete": {
            "userMessage": "",
            "description": ""
        }
    },
    "preDeployment": {
        "deferment": {
            "count": 3,
            "interval": 1,
            "intervalUnit": "HOURS"
        },
        "userMessage": "",
        "description": ""
    },
    "recurring": false,
    "dayOfMonth": null,
    "recurringLastDayOfMonth": false,
    "recurringDayOfMonth": null,
    "patchTuesdayPlusXDays": null,
    "monthlyRecurringType": null,
    "recurringWeekDayOfMonth": null,
    "recurringWeekDays": "",
    "scheduleType": "On-demand",
    "schemaVersion": "1.0",
    "startDateTime": null,
    "status": "Enabled",
    "opportunisticDownloads": false,
    "minimizeWindow": false,
    "timeout": -1,
    "timeoutUnit": "HOURS",
    "timezone": null,
    "timezoneType": null,
    "type": "Install",
    "filterType": "Any",
    "exclusionFilterType": "Any",
    "exclusionTagIds": [],
    "matchAllTagIds": [],
    "coAuthorUserIds": [],
    "platform": "Linux",
    "continueOnPatchFailure": false,
    "exclusionAssetIds": [],
    "jobCategory": null,
    "jobSource": 2,
    "preDeployActions": [
        {
            "action": "Run Script",
            "params": {
                "actionItem": "makecache Pre-Action",
                "remediationScope": false,
                "defaultScriptType": "MakeCache"
            },
            "scriptType": "sh",
            "script": ""
        }
    ],
    "postDeployActions": [],
    "notification": null,
    "remediationQids": [],
    "isVulnContext": false,
    "subCategory": "Patch",
    "chainedJobRule": [],
    "hostIsolationConfig": null,
    "quarantineAssetRequestNotification": null
}

API Response

{
  "customerId": "8ac1558c-cbdf-c133-80c6-0fcf7d68e79c",
  "id": "16be09aa-5415-4a58-8295-8a4ac8db6f26",
  "schemaVersion": "1.0",
  "name": "Demo_Job_MakeCache",
  "type": "Install",
  "status": "Enabled",
  "assetIds": [
    "08a028e6-7e1d-4dbf-b040-48d9059dee08"
  ],
  "assetTagIds": [],
  "matchAllTagIds": [],
  "exclusionTagIds": [],
  "exclusionAssetIds": [],
  "coAuthorUserIds": [],
  "approvedPatches": [],
  "disabledPatches": null,
  "patchCount": 0,
  "scheduleType": "On-demand",
  "startDateTime": null,
  "recurring": false,
  "recurringWeekDays": "",
  "dayOfMonth": null,
  "recurringDayOfMonth": null,
  "recurringWeekDayOfMonth": null,
  "timezoneType": null,
  "timezone": 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": "",
      "description": ""
    },
    "onComplete": {
      "userMessage": "",
      "description": ""
    }
  },
  "description": "",
  "createdBy": null,
  "updatedBy": {
    "user": {
      "id": "9ea81ebb-1830-5f23-8389-2921ae95238f",
      "name": "quaysxkm14",
      "fullName": null
    },
    "date": 1742360741491
  },
  "deletedBy": null,
  "assetCount": null,
  "opportunisticDownloads": false,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "taggedAssetCount": 0,
  "minimizeWindow": false,
  "dynamicPatchesQQL": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "platform": "Linux",
  "continueOnPatchFailure": false,
  "preDeployActions": [
    {
      "actionId": "3b6d5ef7-c165-46f4-b29f-3d978f2b8c6d",
      "action": "Run Script",
      "actionType": "predeploy",
      "params": {
        "actionItem": "makecache Pre-Action",
        "timeout": 180,
        "remediationScope": false,
        "defaultScriptType": "MakeCache"
      },
      "script": "default/MakeCache/makecache",
      "scriptType": "sh",
      "actionLinkedToJob": false
    }
  ],
  "postDeployActions": [],
  "applicableAssetCount": 1,
  "monthlyRecurringType": null,
  "patchTuesdayPlusXDays": null,
  "recurringLastDayOfMonth": false,
  "jobCategory": null,
  "jobTriggerStatus": null,
  "completionPercent": null,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "jobSource": 3,
  "readOnly": false,
  "notification": null,
  "linkedJobId": null,
  "linkedToJob": null,
  "linkedJobs": null,
  "jobStartCountdown": null,
  "passwordAction": null,
  "subCategory": "Patch",
  "additionalDynamicQQLType": null,
  "additionalDynamicPatchesQQL": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "customPatchURLId": null,
  "isVulnContext": false,
  "remediationQids": [],
  "isAssetImported": false,
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "enableReattemptFailedPatches": null,
  "reattemptFailedPatches": null
}

Enhanced API: Get Linux Deployment Job Details by JobID

New or Updated API Updated
API Endpoint  /pm/v1/deploymentjob/{deploymentJobId}
Method GET
DTD or XSD changes Not Applicable

With this release, we have updated this API to include the Linux MakeCache details in the existing jobs that has MakeCache enabled in the Linux deployment jobs.  

Sample - Get Linux Job Details for specific JobIDSample - Get Linux Job Details for specific JobID

API Request

curl -X GET
"<qualys_base_url>/pm/v1/deploymentjob/16be09aa-5415-4a58-8295-8a4ac8db6f26" 
-H "accept: application/json" 
-H "Authorization: Bearer <<jwt token>>"

API Response

{
  "customerId": "8ac1558c-cbdf-c133-80c6-0fcf7d68e79c",
  "id": "16be09aa-5415-4a58-8295-8a4ac8db6f26",
  "schemaVersion": "1.0",
  "name": "Demo_Job_MakeCache",
  "type": "Install",
  "status": "Prepared",
  "assetIds": [
    "08a028e6-7e1d-4dbf-b040-48d9059dee08"
  ],
  "assetTagIds": null,
  "matchAllTagIds": null,
  "exclusionTagIds": null,
  "exclusionAssetIds": null,
  "coAuthorUserIds": null,
  "approvedPatches": null,
  "disabledPatches": null,
  "patchCount": 0,
  "scheduleType": "On-demand",
  "startDateTime": "2025-3-19 05:05:43 AM",
  "recurring": false,
  "recurringWeekDays": "",
  "dayOfMonth": null,
  "recurringDayOfMonth": null,
  "recurringWeekDayOfMonth": null,
  "timezoneType": "SPECIFIC_TZ",
  "timezone": "UTC",
  "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": "",
      "description": ""
    },
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    }
  },
  "description": "",
  "createdBy": {
    "user": {
      "id": "9ea81ebb-1830-5f23-8389-2921ae95238f",
      "name": "quaysxkm14",
      "fullName": "Karan Mehta"
    },
    "date": 1742360595685
  },
  "updatedBy": {
    "user": {
      "id": "9ea81ebb-1830-5f23-8389-2921ae95238f",
      "name": "quaysxkm14",
      "fullName": null
    },
    "date": 1742360816864
  },
  "deletedBy": {
    "user": null,
    "date": null
  },
  "assetCount": null,
  "opportunisticDownloads": false,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "taggedAssetCount": 0,
  "minimizeWindow": false,
  "dynamicPatchesQQL": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "platform": "Linux",
  "continueOnPatchFailure": false,
  "preDeployActions": [
    {
      "actionId": "3b6d5ef7-c165-46f4-b29f-3d978f2b8c6d",
      "action": "Run Script",
      "actionType": "predeploy",
      "params": {
        "actionItem": "makecache Pre-Action",
        "timeout": 180,
        "remediationScope": false,
        "defaultScriptType": "MakeCache"
      },
      "script": "IyEvYmluL2Jhc2gKREFURT0kKGRhdGUgKyVGKQpMT0dCQVNFPSIvdG1wIgpVUERBVEVfTE9HPSIke0xPR0JBU0V9L3VwZGF0ZWxvZ18ke0RBVEV9LmxvZyIKRVJST1JfTE9HPSIke0xPR0JBU0V9L2Vycm9ybG9nXyR7REFURX0ubG9nIgpUUkFOU0FDVElPTl9JRD0iL3Vzci9sb2NhbC9xdWFseXMvY2xvdWQtYWdlbnQvdHJhbnNhY3Rpb25tcG9yYXJ5IGZpbGUKICAgICAgICAgcm0gL3RtcC95dW1faGlzdG9yeV9pbmZvLnR4dAogICAgICAgICBleGl0IDEKICAgIGZpCiAgICAjIENsZWFuIHVwIHRlbXBvcmFyeSBmaWxlCiAgICBybSAvdG1wL3l1bV9oaXN0b3J5X2luZm8udHh0Cn0KIyBNYWluIHNjcmlwdCBleGVjdXRpb24KY2hlY2tfb3MKaWYgW1sgJD8gLWVxIDAgXV07IHRoZW4KICAgIHNldF95dW0KICAgIHVwZGF0ZV9zeXN0ZW0KICAgIGV4dHJhY3RfbGFzdF90cmFuc2FjdGlvbl9pZAogICAgY2hlY2tfbGFzdF90cmFuc2FjdGlvbgplbHNlCiAgICBlY2hvICJFeGl0aW5nIHNjcmlwdCBhcyBPUyBpcyBub3QgUkhFTC1iYXNlZCIKICAgIGV4aXQgMQpmaQ==",
      "scriptType": "sh",
      "actionLinkedToJob": false
    }
  ],
  "postDeployActions": null,
  "applicableAssetCount": 1,
  "monthlyRecurringType": null,
  "patchTuesdayPlusXDays": null,
  "recurringLastDayOfMonth": false,
  "jobCategory": 3,
  "jobTriggerStatus": 1,
  "completionPercent": null,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "jobSource": 3,
  "readOnly": false,
  "notification": null,
  "linkedJobId": null,
  "linkedToJob": null,
  "linkedJobs": null,
  "jobStartCountdown": null,
  "passwordAction": null,
  "subCategory": "Patch",
  "additionalDynamicQQLType": null,
  "additionalDynamicPatchesQQL": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "customPatchURLId": null,
  "isVulnContext": false,
  "remediationQids": null,
  "isAssetImported": false,
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "enableReattemptFailedPatches": null,
  "reattemptFailedPatches": null
}

Enhanced Windows Deployment Job APIs

Enhanced API: Create Windows 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 updated the Create Deployment Job API for Windows with options to retry the deployment of failed patches again in the same job, once the job is completed. 

Input ParametersInput Parameters

Parameter

Mandatory/Optional

Data Type

Description

reattemptFailedPatches Optional Boolean Specify the value as True or false.
noOfReattempts Optional Integer Specify the number of re-attempts. Provide values between 1-5. 
exponentialBackoffInterval Optional Integer Specify valid backoff interval between retries. Provide values between 1 to 15.

Sample - Create Windows Deployment JobSample - Create Windows Deployment Job

API Request

curl -X POST
"https://<QualysBaseURL>/pm/v1/deploymentjob" 
-H "accept: application/json" 
-H "Authorization: Bearer <<jwt token>>"

Request Body

{
    "approvedPatches": [
      "444ba31a-0f94-3199-870e-ef8ab1a5a477",
      "b91fca0e-2a07-3155-909c-fc50ba1863ed"
    ],
    "dynamicPatchesQQL": "",
    "isDynamicPatchesQQL": false,
    "linkedJobId": "",
    "dynamicQQLType": 1,
    "assetIds": [
      "ffb6aa16-f342-4f94-99c1-3ae941ce6357"
    ],
    "assetTagIds": [],
    "deleted": false,
    "duringDeployment": {
      "userMessage": "",
      "description": ""
    },
    "name": "TestAPI_CreateJobNew222",
    "description": "",
    "createdBy": null,
    "postDeployment": {
      "suppressreboots": false,
      "onComplete": {
        "userMessage": "",
        "description": ""
      },
      "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": ""
    },
    "recurring": false,
    "dayOfMonth": null,
    "recurringLastDayOfMonth": false,
    "patchTuesdayPlusXDays": null,
    "monthlyRecurringType": null,
    "recurringDayOfMonth": null,
    "recurringWeekDayOfMonth": null,
    "recurringWeekDays": "",
    "scheduleType": "On-demand",
    "schemaVersion": "1.0",
    "startDateTime": null,
    "status": "Disabled",
    "opportunisticDownloads": false,
    "minimizeWindow": false,
    "timeout": -1,
    "timeoutUnit": "HOURS",
    "timezone": null,
    "timezoneType": null,
    "type": "Install",
    "filterType": "Any",
    "exclusionFilterType": "Any",
    "exclusionTagIds": [],
    "matchAllTagIds": [],
    "coAuthorUserIds": [],
    "platform": "Windows",
    "exclusionAssetIds": [],
    "preDeployActions": [],
    "postDeployActions": [],
    "jobCategory": null,
    "jobSource": 2,
    "notification": null,
    "enableReattemptFailedPatches": true,
    "reattemptFailedPatches": {
      "noOfReattempts": 5,
      "exponentialBackoffInterval": 15
    }
  }

API Response

{
  "customerId": "c8f2006c-3f0a-5d94-83c7-2ac1dc78063b",
  "id": "44ae1515-a51c-4d67-87ae-aef57d1e26b2",
  "schemaVersion": "1.0",
  "name": "TestAPI_CreateJobNew222",
  "type": "Install",
  "status": "Disabled",
  "assetIds": [
    "ffb6aa16-f342-4f94-99c1-3ae941ce6357"
  ],
  "assetTagIds": [],
  "matchAllTagIds": [],
  "exclusionTagIds": [],
  "exclusionAssetIds": [],
  "coAuthorUserIds": [],
  "approvedPatches": [
    "444ba31a-0f94-3199-870e-ef8ab1a5a477",
    "b91fca0e-2a07-3155-909c-fc50ba1863ed"
  ],
  "disabledPatches": null,
  "patchCount": 2,
  "scheduleType": "On-demand",
  "startDateTime": "2025-3-18 09:47:32 AM",
  "recurring": false,
  "recurringWeekDays": "",
  "dayOfMonth": null,
  "recurringDayOfMonth": null,
  "recurringWeekDayOfMonth": null,
  "timezoneType": "SPECIFIC_TZ",
  "timezone": "UTC",
  "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
    }
  },
  "description": "",
  "createdBy": {
    "user": {
      "id": "30ce0a0f-05b4-db48-8296-b7dd8a6d2943",
      "name": "quays_vy59",
      "fullName": "Sagar Thorat"
    },
    "date": 1742291252281
  },
  "updatedBy": {
    "user": null,
    "date": null
  },
  "deletedBy": {
    "user": null,
    "date": null
  },
  "assetCount": null,
  "opportunisticDownloads": false,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "taggedAssetCount": 0,
  "minimizeWindow": false,
  "dynamicPatchesQQL": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "platform": "Windows",
  "continueOnPatchFailure": false,
  "preDeployActions": null,
  "postDeployActions": null,
  "applicableAssetCount": 1,
  "monthlyRecurringType": null,
  "patchTuesdayPlusXDays": null,
  "recurringLastDayOfMonth": false,
  "jobCategory": 3,
  "jobTriggerStatus": null,
  "completionPercent": null,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "jobSource": 3,
  "readOnly": false,
  "notification": null,
  "linkedJobId": null,
  "linkedToJob": null,
  "linkedJobs": null,
  "jobStartCountdown": null,
  "passwordAction": null,
  "subCategory": "Patch",
  "additionalDynamicQQLType": null,
  "additionalDynamicPatchesQQL": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "customPatchURLId": null,
  "isVulnContext": null,
  "remediationQids": null,
  "isAssetImported": false,
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "enableReattemptFailedPatches": true,
  "reattemptFailedPatches": {
    "noOfReattempts": 5,
    "exponentialBackoffInterval": 15
  }
}

Enhanced API: Get Windows Deployment Job Details by JobID

New or Updated API Updated
API Endpoint  /pm/v1/deploymentjob/{deploymentJobId}
Method GET
DTD or XSD changes Not Applicable


In this release, we have enhanced this API response to include options that retry the deployment of failed patches again for the deployment job for the specified job ID.

Sample - Get Windows Deployment Job Details by Job IDSample - Get Windows Deployment Job Details by Job ID

API Request

curl -X GET
"<qualys_base_url>/pm/v1/deploymentjob/c8f2006c-3f0a-5d94-83c7-2ac1dc78063b" 
-H "accept: application/json" 
-H "Authorization: Bearer <<jwt token>>"

API Response

{
  "customerId": "c8f2006c-3f0a-5d94-83c7-2ac1dc78063b",
  "id": "1ca9c211-6c0a-4855-ac49-f9d735b1563c",
  "schemaVersion": "1.0",
  "name": "WinOnDemJob_Update_1742489647906",
  "type": "Install",
  "status": "Prepared",
  "assetIds": [
    "6df4bc50-83ce-49e5-a5c2-1814413f8057"
  ],
  "assetTagIds": null,
  "matchAllTagIds": null,
  "exclusionTagIds": null,
  "exclusionAssetIds": null,
  "coAuthorUserIds": null,
  "approvedPatches": [
    "444ba31a-0f94-3199-870e-ef8ab1a5a477",
    "b91fca0e-2a07-3155-909c-fc50ba1863ed"
  ],
  "disabledPatches": null,
  "patchCount": 2,
  "scheduleType": "On-demand",
  "startDateTime": "2025-3-21 05:14:11 AM",
  "recurring": false,
  "recurringWeekDays": "",
  "dayOfMonth": null,
  "recurringDayOfMonth": null,
  "recurringWeekDayOfMonth": null,
  "timezoneType": "SPECIFIC_TZ",
  "timezone": "UTC",
  "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
    }
  },
  "description": "Updated Job",
  "createdBy": {
    "user": {
      "id": "30ce0a0f-05b4-db48-8296-b7dd8a6d2943",
      "name": "quays_vy59",
      "fullName": "Sagar Thorat"
    },
    "date": 1742489646254
  },
  "updatedBy": {
    "user": {
      "id": "30ce0a0f-05b4-db48-8296-b7dd8a6d2943",
      "name": "quays_vy59",
      "fullName": null
    },
    "date": 1742534123567
  },
  "deletedBy": {
    "user": null,
    "date": null
  },
  "assetCount": null,
  "opportunisticDownloads": false,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "taggedAssetCount": 0,
  "minimizeWindow": false,
  "dynamicPatchesQQL": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "platform": "Windows",
  "continueOnPatchFailure": false,
  "preDeployActions": null,
  "postDeployActions": null,
  "applicableAssetCount": 1,
  "monthlyRecurringType": null,
  "patchTuesdayPlusXDays": null,
  "recurringLastDayOfMonth": false,
  "jobCategory": 3,
  "jobTriggerStatus": 1,
  "completionPercent": null,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "jobSource": 3,
  "readOnly": false,
  "notification": null,
  "linkedJobId": null,
  "linkedToJob": null,
  "linkedJobs": null,
  "jobStartCountdown": null,
  "passwordAction": null,
  "subCategory": "Patch",
  "additionalDynamicQQLType": null,
  "additionalDynamicPatchesQQL": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "customPatchURLId": null,
  "isVulnContext": false,
  "remediationQids": null,
  "isAssetImported": false,
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "enableReattemptFailedPatches": true,
  "reattemptFailedPatches": {
    "noOfReattempts": 1,
    "exponentialBackoffInterval": 5
  }
}

Enhanced API: Get Windows Deployment Job Results Summary by Job ID 

New or Updated API Updated
API Endpoint  /pm/v1/deploymentjob/{deploymentJobId}/deploymentjobresult/summary
Method GET
DTD or XSD changes Not Applicable

In this release, we have enhanced this API to get the deployment job results based on the specified job ID. 

Sample - Get Windows Deployment Job Results Summary by Job IDSample - Get Windows Deployment Job Results Summary by Job ID

API Request

curl -X GET
"<qualys_base_url>/pm/v1/deploymentjob/16be09aa-5415-4a58-8295-8a4ac8db6f26" 
-H "accept: application/json" 
-H "Authorization: Bearer <<jwt token>>"

API Response

{
  "id": "4cd571f5-e470-4b7d-926d-eb7cafb7326d",
  "name": "WinOnDemJob_Update_1742921174193",
  "assetCount": 1,
  "patchCount": 2,
  "createdBy": "quays_vy59",
  "createdOn": 1742921172719,
  "assets": [
    {
      "asset": {
        "id": "6df4bc50-83ce-49e5-a5c2-1814413f8057",
        "name": "PMUI_AUTOMATION_ASSET_WINDOWS_EXCLUSION",
        "operatingSystem": "Windows Microsoft Windows 10 Pro 10.0.17134 Build 17134",
        "tags": [
          {
            "id": "236bdc33-a0c7-4baf-8ce3-fc89ad5302ce",
            "name": null
          },
          {
            "id": "6d1cd4b6-378d-4c95-ad47-f459882e7c35",
            "name": null
          },
          {
            "id": "e8acf5ba-577f-47b7-80a8-8888704d9117",
            "name": null
          },
          {
            "id": "ce1e4d6a-7119-4177-9bcc-0b31c39aad1b",
            "name": null
          }
        ],
        "lastLoggedOnUser": "",
        "successPatches": 0,
        "installedPatches": 0,
        "failedPatches": 0,
        "supersededPatches": 0,
        "notApplicablePatches": 2,
        "executing": 0,
        "pendingExecution": 0,
        "pendingReboot": 0,
        "pendingVerification": 0,
        "jobInstanceId": 1,
        "interfaces": [
          {
            "interfaceName": null,
            "macAddress": null,
            "address": "10.115.109.163",
            "gatewayAddress": null
          }
        ],
        "skipPatchCount": 2,
        "additionalFields": {
          "failedPatchRetryNumber": 1,
          "totalAvailableFailedPatchRetries": 3
        }
      },
      "endDateTime": 1742925811729,
      "startDateTime": 1742921179378,
      "statusDateTime": 1742925808761,
      "status": "Reattempting",
      "statusCode": "20740",
      "jobSentOn": 1742921262874,
      "installed": [],
      "failed": [],
      "success": null,
      "superseded": [],
      "notApplicable": [
        "b91fca0e-2a07-3155-909c-fc50ba1863ed",
        "444ba31a-0f94-3199-870e-ef8ab1a5a477"
      ],
      "failedActionsCount": 0,
      "successfulActionsCount": 0,
      "skippedActionsCount": 0,
      "interimResultStatus": null,
      "jobInstanceId": 1,
      "totalPatchCount": 0,
      "runId": 2,
      "scanDateTime": 1742990566879,
      "pendingForRebootInAnotherJob": false,
      "pendingForRebootInAnotherJobName": null,
      "osIdentifier": "WINDOWS",
      "isolation": null
    }
  ]
}

Enhanced API: Update Windows Deployment Job by JobID

New or Updated API Updated
API Endpoint  /pm/v1/deploymentjob/update/{deploymentJobId}
Method PATCH
DTD or XSD changes Not Applicable

In this release,  we have enhanced this API to include the options that retry the deployment of failed patches again while updating a Windows deployment job for a particular job ID.

Sample - Update Windows Deployment Job by Job IDSample - Update Windows Deployment Job by Job ID

API Request

curl -X PATCH
"https://<QualysBaseURL>/pm/v1/deploymentjob/update/c08769ba-aa65-4b77-b224-f2c789ce7970" 
-H "accept: application/json" 
-H "Authorization: <<Jwt Token>>" 
-H "Content-Type: application/json"

Request Body

{
    "approvedPatches": [
      "444ba31a-0f94-3199-870e-ef8ab1a5a477",
      "b91fca0e-2a07-3155-909c-fc50ba1863ed"
    ],
    "dynamicPatchesQQL": "",
    "isDynamicPatchesQQL": false,
    "linkedJobId": "",
    "dynamicQQLType": 1,
    "assetIds": [
      "65dad690-0144-0004-596b-005056aa5259"
    ],
    "assetTagIds": [],
    "deleted": false,
    "duringDeployment": {
      "userMessage": "",
      "description": ""
    },
    "name": "TestAPI_Update_New",
    "description": "",
    "createdBy": null,
    "postDeployment": {
      "suppressreboots": false,
      "onComplete": {
        "userMessage": "",
        "description": ""
      },
      "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": ""
    },
    "recurring": false,
    "dayOfMonth": null,
    "recurringLastDayOfMonth": false,
    "patchTuesdayPlusXDays": null,
    "monthlyRecurringType": null,
    "recurringDayOfMonth": null,
    "recurringWeekDayOfMonth": null,
    "recurringWeekDays": "",
    "scheduleType": "On-demand",
    "schemaVersion": "1.0",
    "startDateTime": null,
    "status": "Disabled",
    "opportunisticDownloads": false,
    "minimizeWindow": false,
    "timeout": -1,
    "timeoutUnit": "HOURS",
    "timezone": null,
    "timezoneType": null,
    "type": "Install",
    "filterType": "Any",
    "exclusionFilterType": "Any",
    "exclusionTagIds": [],
    "matchAllTagIds": [],
    "coAuthorUserIds": [],
    "platform": "Windows",
    "exclusionAssetIds": [],
    "preDeployActions": [],
    "postDeployActions": [],
    "jobCategory": null,
    "jobSource": 2,
    "notification": null,
    "enableReattemptFailedPatches": true,
    "reattemptFailedPatches": {
      "noOfReattempts": 4,
      "exponentialBackoffInterval": 10
    }
  }

API Response

 "approvedPatches": [
      "444ba31a-0f94-3199-870e-ef8ab1a5a477",
      "b91fca0e-2a07-3155-909c-fc50ba1863ed"
    ],
    "dynamicPatchesQQL": "",
    "isDynamicPatchesQQL": false,
    "linkedJobId": "",
    "dynamicQQLType": 1,
    "assetIds": [
      "65dad690-0144-0004-596b-005056aa5259"
    ],
    "assetTagIds": [],
    "deleted": false,
    "duringDeployment": {
      "userMessage": "",
      "description": ""
    },
    "name": "TestAPI_Update_New",
    "description": "",
    "createdBy": null,
    "postDeployment": {
      "suppressreboots": false,
      "onComplete": {
        "userMessage": "",
        "description": ""
      },
      "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": ""
    },
    "recurring": false,
    "dayOfMonth": null,
    "recurringLastDayOfMonth": false,
    "patchTuesdayPlusXDays": null,
    "monthlyRecurringType": null,
    "recurringDayOfMonth": null,
    "recurringWeekDayOfMonth": null,
    "recurringWeekDays": "",
    "scheduleType": "On-demand",
    "schemaVersion": "1.0",
    "startDateTime": null,
    "status": "Disabled",
    "opportunisticDownloads": false,
    "minimizeWindow": false,
    "timeout": -1,
    "timeoutUnit": "HOURS",
    "timezone": null,
    "timezoneType": null,
    "type": "Install",
    "filterType": "Any",
    "exclusionFilterType": "Any",
    "exclusionTagIds": [],
    "matchAllTagIds": [],
    "coAuthorUserIds": [],
    "platform": "Windows",
    "exclusionAssetIds": [],
    "preDeployActions": [],
    "postDeployActions": [],
    "jobCategory": null,
    "jobSource": 2,
    "notification": null,
    "enableReattemptFailedPatches": true,
    "reattemptFailedPatches": {
      "noOfReattempts": 4,
      "exponentialBackoffInterval": 10
    }
  }