Policy Audit Release 1.1.0 API
July 7, 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.
We have implemented versioning for APIs. For more information on API versioning, refer to the Introducing API Versioning: A Strategic Upgrade for Enhanced Stability and Control for API Integrations blog.
Polices API: View Control Status for a Policy
New or Updated API | Updated |
API Endpoint (deprecation Timeline - December 2025) | /api/2.0/fo/compliance/policy |
API Endpoint (New Version) |
/api/3.0/fo/compliance/policy |
Method | GET and POST |
DTD or XSD changes | Yes |
With this release, we have added a new tag - STATUS to the List Policies API. With the addition you can view the status (either active or inactive) of each Control associated to the Policy.
To ensure alignment with the Policy List API, the Policy Export and Policy Import APIs are now on version 3.0 (v3.0). Support for the new tag is not currently available in these APIs.
List Policies API
Sample - List PolicySample - List Policy
API
Requestcurl -k -s -S -H 'X-Requested-With:curl demo2' -u "username:Password#" -d "action=list&details=Basic&ids=5744989" "https://<qualys_base_url>/api/3.0/fo/compliance/policy/"
API Response
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE POLICY_LIST_OUTPUT SYSTEM "https://<qualys_base_url>/api/3.0/fo/compliance/policy/policy_list_output.dtd"> <POLICY_LIST_OUTPUT> <RESPONSE> <DATETIME>2025-06-30T06:26:19Z</DATETIME> <POLICY_LIST> <POLICY> <ID>5744989</ID> <TITLE> <![CDATA[One UDC]]> </TITLE> <CREATED> <DATETIME>2025-06-25T15:04:04Z</DATETIME> <BY>ctxta</BY> </CREATED> <LAST_MODIFIED> <DATETIME>2025-06-27T11:57:34Z</DATETIME> <BY>ctxta</BY> </LAST_MODIFIED> <LAST_EVALUATED> <DATETIME>2025-06-30T06:01:44Z</DATETIME> </LAST_EVALUATED> <STATUS> <![CDATA[active]]> </STATUS> <IS_LOCKED>0</IS_LOCKED> <EVALUATE_NOW> <![CDATA[yes]]> </EVALUATE_NOW> <ASSET_GROUP_IDS>10898081,10919108,10926154,10996581,11000130,11000163-11000164,11024194,11035730,11072689,11076105,11080595,11080756,11081917,11111120</ASSET_GROUP_IDS> <CONTROL_LIST> <CONTROL> <ID>1071</ID> <STATEMENT> <![CDATA[Status of the 'Minimum Password Length' setting]]> </STATEMENT> <CRITICALITY> <LABEL> <![CDATA[URGENT]]> </LABEL> <VALUE>5</VALUE> </CRITICALITY> <STATUS> <![CDATA[Active]]> </STATUS> </CONTROL> <CONTROL> <ID>100000</ID> <STATEMENT> <![CDATA[CitiJSONUDC2]]> </STATEMENT> <CRITICALITY> <LABEL> <![CDATA[URGENT]]> </LABEL> <VALUE>5</VALUE> </CRITICALITY> <STATUS> <![CDATA[Active]]> </STATUS> </CONTROL> </CONTROL_LIST> </POLICY> </POLICY_LIST> <GLOSSARY> <ASSET_GROUP_LIST> <ASSET_GROUP> <ID>10898081</ID> <TITLE> <![CDATA[IBMDB2]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>10919108</ID> <TITLE> <![CDATA[Inflobox AG]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>10926154</ID> <TITLE> <![CDATA[ip agent merge case]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11081917</ID> <TITLE> <![CDATA[pyscand ag3]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11111120</ID> <TITLE> <![CDATA[Windows AG nEw]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>10996581</ID> <TITLE> <![CDATA[dtest AG]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11000130</ID> <TITLE> <![CDATA[Windows AG]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11000163</ID> <TITLE> <![CDATA[Vcenter]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11000164</ID> <TITLE> <![CDATA[VMagentPCIP]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11024194</ID> <TITLE> <![CDATA[PC Only Ip]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11035730</ID> <TITLE> <![CDATA[1.1.1.1]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11072689</ID> <TITLE> <![CDATA[red hat 8]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11076105</ID> <TITLE> <![CDATA[pyscand ag2]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11080595</ID> <TITLE> <![CDATA[windows and unix agent ip]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> <ASSET_GROUP> <ID>11080756</ID> <TITLE> <![CDATA[RDS]]> </TITLE> <NETWORK_ID>0</NETWORK_ID> </ASSET_GROUP> </ASSET_GROUP_LIST> </GLOSSARY> </RESPONSE> </POLICY_LIST_OUTPUT>
DTD UpdateDTD Update
A DTD for the List Policies API has been added.
<platform API server>/api/3.0/fo/compliance/policy/policy_list_output.dtd
DTD output for the List Policies API is as follows:
DTD Output
<!-- QUALYS POLICY_LIST_OUTPUT DTD -->
<!-- $Revision$ -->
<!ELEMENT POLICY_LIST_OUTPUT (REQUEST?,RESPONSE)>
<!ELEMENT REQUEST (DATETIME, USER_LOGIN, RESOURCE, PARAM_LIST?, POST_DATA?)>
<!ELEMENT DATETIME (#PCDATA)>
<!ELEMENT USER_LOGIN (#PCDATA)>
<!ELEMENT RESOURCE (#PCDATA)>
<!ELEMENT PARAM_LIST (PARAM+)>
<!ELEMENT PARAM (KEY, VALUE)>
<!ELEMENT KEY (#PCDATA)>
<!ELEMENT VALUE (#PCDATA)>
<!-- if returned, POST_DATA will be urlencoded -->
<!ELEMENT POST_DATA (#PCDATA)>
<!ELEMENT RESPONSE (DATETIME, (POLICY_LIST|ID_SET)?, WARNING_LIST?, GLOSSARY?)>
<!ELEMENT POLICY_LIST (POLICY+)>
<!ELEMENT POLICY (ID, TITLE, CREATED?, LAST_MODIFIED?, LAST_EVALUATED?, STATUS?, IS_LOCKED?, EVALUATE_NOW?, ASSET_GROUP_IDS?, TAG_SET_INCLUDE?, TAG_INCLUDE_SELECTOR?, TAG_SET_EXCLUDE?, TAG_EXCLUDE_SELECTOR?, INCLUDE_AGENT_IPS?, CONTROL_LIST?)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT CREATED (DATETIME, BY)>
<!ELEMENT BY (#PCDATA)>
<!ELEMENT LAST_MODIFIED (DATETIME, BY)>
<!ELEMENT LAST_EVALUATED (DATETIME)>
<!ELEMENT STATUS (#PCDATA)>
<!ELEMENT IS_LOCKED (#PCDATA)>
<!ELEMENT EVALUATE_NOW (#PCDATA)>
<!ELEMENT ASSET_GROUP_IDS (#PCDATA)>
<!ATTLIST ASSET_GROUP_IDS has_hidden_data CDATA #IMPLIED>
<!ELEMENT TAG_SET_INCLUDE (TAG_ID+)>
<!ELEMENT TAG_ID (#PCDATA)>
<!ELEMENT TAG_INCLUDE_SELECTOR (#PCDATA)>
<!ELEMENT TAG_SET_EXCLUDE (TAG_ID+)>
<!ELEMENT TAG_EXCLUDE_SELECTOR (#PCDATA)>
<!ELEMENT INCLUDE_AGENT_IPS (#PCDATA)>
<!ELEMENT CONTROL_LIST (CONTROL+)>
<!ELEMENT CONTROL (ID, STATEMENT, CRITICALITY?, STATUS?, DEPRECATED?, TECHNOLOGY_LIST?)>
<!ELEMENT STATEMENT (#PCDATA)>
<!ELEMENT CRITICALITY (LABEL, VALUE)>
<!ELEMENT LABEL (#PCDATA)>
<!ELEMENT DEPRECATED (#PCDATA)>
<!ELEMENT TECHNOLOGY_LIST (TECHNOLOGY+)>
<!ELEMENT TECHNOLOGY (ID, NAME, RATIONALE, CUSTOMIZED, REMEDIATION?)>
<!ELEMENT NAME (#PCDATA)>
<!ELEMENT RATIONALE (#PCDATA)>
<!ELEMENT CUSTOMIZED (#PCDATA)>
<!ELEMENT REMEDIATION (#PCDATA)>
<!ELEMENT ID_SET (ID|ID_RANGE)+>
<!ELEMENT ID_RANGE (#PCDATA)>
<!ELEMENT WARNING_LIST (WARNING+)>
<!ELEMENT WARNING (CODE?, TEXT, URL?)>
<!ELEMENT CODE (#PCDATA)>
<!ELEMENT TEXT (#PCDATA)>
<!ELEMENT URL (#PCDATA)>
<!ELEMENT GLOSSARY (ASSET_GROUP_LIST?, ASSET_TAG_LIST?, USER_LIST?)>
<!ELEMENT ASSET_GROUP_LIST (ASSET_GROUP+)>
<!ELEMENT ASSET_GROUP (ID, TITLE, NETWORK_ID?, IP_SET?)>
<!ELEMENT NETWORK_ID (#PCDATA)>
<!ELEMENT IP_SET (IP|IP_RANGE)+>
<!ELEMENT IP (#PCDATA)>
<!ELEMENT IP_RANGE (#PCDATA)>
<!ELEMENT ASSET_TAG_LIST (ASSET_INCLUDE_TAG_LIST?, ASSET_EXCLUDE_TAG_LIST?)>
<!ELEMENT ASSET_INCLUDE_TAG_LIST (TAG+)>
<!ELEMENT ASSET_EXCLUDE_TAG_LIST (TAG+)>
<!ELEMENT TAG (TAG_ID?, TAG_NAME?)>
<!ELEMENT TAG_NAME (#PCDATA)>
<!ELEMENT USER_LIST (USER+)>
<!ELEMENT USER (USER_LOGIN, FIRST_NAME, LAST_NAME)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!-- EOF -->
Policy Export API
Sample - Policy ExportSample - Policy Export
API
Requestcurl -k -s -S -H 'X-Requested-With:curl demo2' -u "username:Password#" -d "action=export&id=5744989&show_user_controls=1" "https://<qualys_base_url>/api/3.0/fo/compliance/policy/"> Policy_export_V3sample.xml
API Response
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE POLICY_EXPORT_OUTPUT SYSTEM "https://<qualys_base_url>/api/3.0/fo/compliance/policy/policy_export_output.dtd">
<POLICY_EXPORT_OUTPUT>
<RESPONSE>
<DATETIME>2025-06-27T12:02:10Z</DATETIME>
<POLICY>
<TITLE><![CDATA[One UDC]]></TITLE>
<EXPORTED><![CDATA[2025-06-27T12:02:10Z]]></EXPORTED>
<COVER_PAGE><![CDATA[]]></COVER_PAGE>
<STATUS><![CDATA[active]]></STATUS>
<TECHNOLOGIES total="1">
<TECHNOLOGY>
<ID>80</ID>
<NAME>CentOS 7.x</NAME>
</TECHNOLOGY>
</TECHNOLOGIES>
<SECTIONS total="2">
<SECTION>
<NUMBER>1</NUMBER>
<HEADING><![CDATA[UDC]]></HEADING>
<CONTROLS total="1">
<USER_DEFINED_CONTROL>
<ID>100000</ID>
<UDC_ID>3e8fada3-8bc3-f557-8115-c567323d327a</UDC_ID>
<CHECK_TYPE>Unix File/Directory Existence</CHECK_TYPE>
<IS_CONTROL_DISABLE><![CDATA[0]]></IS_CONTROL_DISABLE>
<CATEGORY>
<ID>2</ID>
<NAME><![CDATA[Web Application Services]]></NAME>
</CATEGORY>
<SUB_CATEGORY>
<ID>1028</ID>
<NAME><![CDATA[Web Server/Tier Settings]]></NAME>
</SUB_CATEGORY>
<STATEMENT><![CDATA[CitiJSONUDC2]]></STATEMENT>
<CRITICALITY>
<LABEL><![CDATA[URGENT]]></LABEL>
<VALUE>5</VALUE>
</CRITICALITY>
<COMMENT><![CDATA[]]></COMMENT>
<USE_AGENT_ONLY>0</USE_AGENT_ONLY>
<AUTO_UPDATE>0</AUTO_UPDATE>
<IGNORE_ERROR>0</IGNORE_ERROR>
<IGNORE_ITEM_NOT_FOUND>0</IGNORE_ITEM_NOT_FOUND>
<SCAN_PARAMETERS>
<FILE_PATH><![CDATA[/etc/profile]]></FILE_PATH>
<DATA_TYPE>Boolean</DATA_TYPE>
<DESCRIPTION><![CDATA[NA]]></DESCRIPTION>
</SCAN_PARAMETERS>
<TECHNOLOGIES total="1">
<TECHNOLOGY>
<ID>80</ID>
<NAME>CentOS 7.x</NAME>
<EVALUATE><CTRL><DP><K>custom.file_dir_exist.4211083</K><L>2</L><V>true</V></DP></CTRL></EVALUATE>
<RATIONALE><![CDATA[RA]]></RATIONALE>
<REMEDIATION><![CDATA[]]></REMEDIATION>
<DATAPOINT>
<CARDINALITY>no cd</CARDINALITY>
<OPERATOR>no op</OPERATOR>
<DEFAULT_VALUES total="1">
<DEFAULT_VALUE>true</DEFAULT_VALUE>
</DEFAULT_VALUES>
</DATAPOINT>
</TECHNOLOGY>
</TECHNOLOGIES>
<REFERENCE_LIST/>
</USER_DEFINED_CONTROL>
</CONTROLS>
</SECTION>
<SECTION>
<NUMBER>2</NUMBER>
<HEADING><![CDATA[SDC]]></HEADING>
<CONTROLS total="1">
<CONTROL>
<ID>1071</ID>
<CRITICALITY>
<LABEL><![CDATA[URGENT]]></LABEL>
<VALUE>5</VALUE>
</CRITICALITY>
<IS_CONTROL_DISABLE><![CDATA[0]]></IS_CONTROL_DISABLE>
<TECHNOLOGIES total="1">
<TECHNOLOGY>
<ID>80</ID>
<NAME>CentOS 7.x</NAME>
<EVALUATE><CTRL><DP><K>rh06.secman.system.logindefs-min-password-length</K><OP>ge</OP><V>0</V><FV set="1">161803399999999</FV><FV set="1">314159265358979</FV></DP></CTRL></EVALUATE>
<REMEDIATION/>
</TECHNOLOGY>
</TECHNOLOGIES>
</CONTROL>
</CONTROLS>
</SECTION>
</SECTIONS>
</POLICY>
</RESPONSE>
</POLICY_EXPORT_OUTPUT>
Policy Import API
Sample - Policy ImportSample - Policy Import
API
Requestcurl -k -s -S -H 'X-Requested-With:curl demo2' -u "username:Password#" -H Content-type:text/xml --data-binary "@/home/mprasad/Policy_export_V3sample.xml" "https://<qualys_base_url>/api/3.0/fo/compliance/policy/?action=import&title=V3sample"
API Response
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE SIMPLE_RETURN SYSTEM "https://<qualys_base_url>/api/3.0/simple_return.dtd">
<SIMPLE_RETURN>
<RESPONSE>
<DATETIME>2025-06-27T12:04:53Z</DATETIME>
<TEXT>Successfully imported compliance policy</TEXT>
<ITEM_LIST>
<ITEM>
<KEY>ID</KEY>
<VALUE>5757988</VALUE>
</ITEM>
<ITEM>
<KEY>TITLE</KEY>
<VALUE>V3sample</VALUE>
</ITEM>
</ITEM_LIST>
</RESPONSE>
</SIMPLE_RETURN>