From eeb1680e9261b6f339c4cb3d72b6cb5fbfb58d60 Mon Sep 17 00:00:00 2001 From: rmurray-r7 Date: Mon, 4 Nov 2024 11:31:15 +0000 Subject: [PATCH] [SOAR-18091] Ivanti Security Controls - Snyk Vulnerability and SDK Bump (#2924) * snyk and sdk - ivanti * fixing help.md input values * fixing help.md (again) * new line --- plugins/ivanti_security_controls/.CHECKSUM | 36 +- plugins/ivanti_security_controls/Dockerfile | 18 +- .../bin/icon_ivanti_security_controls | 94 +- plugins/ivanti_security_controls/help.md | 812 ++++++++++-------- .../actions/__init__.py | 31 +- .../__init__.py | 2 +- .../create_patch_group_and_add_cves/schema.py | 13 +- .../create_patch_scan_template/__init__.py | 2 +- .../create_patch_scan_template/schema.py | 280 ++---- .../actions/get_agent/__init__.py | 2 +- .../actions/get_agent/schema.py | 25 +- .../actions/get_agent_status/__init__.py | 2 +- .../actions/get_agent_status/schema.py | 25 +- .../actions/get_agents/__init__.py | 2 +- .../actions/get_agents/schema.py | 25 +- .../actions/get_patch_deployment/__init__.py | 2 +- .../actions/get_patch_deployment/schema.py | 139 +-- .../__init__.py | 2 +- .../schema.py | 16 +- .../actions/get_patch_details/__init__.py | 2 +- .../actions/get_patch_details/schema.py | 113 +-- .../actions/get_patch_scan_status/__init__.py | 2 +- .../actions/get_patch_scan_status/schema.py | 13 +- .../get_scanned_machine_details/__init__.py | 2 +- .../get_scanned_machine_details/schema.py | 189 ++-- .../actions/search_patches/__init__.py | 2 +- .../actions/search_patches/schema.py | 113 +-- .../start_patch_deployment/__init__.py | 2 +- .../actions/start_patch_deployment/schema.py | 16 +- .../actions/start_patch_scan/__init__.py | 2 +- .../actions/start_patch_scan/schema.py | 13 +- .../actions/update_patch_group/__init__.py | 2 +- .../actions/update_patch_group/schema.py | 16 +- .../connection/__init__.py | 2 +- .../connection/schema.py | 22 +- .../tasks/__init__.py | 2 + .../triggers/__init__.py | 3 +- .../ivanti_security_controls/plugin.spec.yaml | 35 +- .../ivanti_security_controls/requirements.txt | 2 +- plugins/ivanti_security_controls/setup.py | 4 +- .../unit_test/__init__.py | 4 + 41 files changed, 1014 insertions(+), 1075 deletions(-) mode change 100755 => 100644 plugins/ivanti_security_controls/help.md create mode 100644 plugins/ivanti_security_controls/icon_ivanti_security_controls/tasks/__init__.py create mode 100644 plugins/ivanti_security_controls/unit_test/__init__.py diff --git a/plugins/ivanti_security_controls/.CHECKSUM b/plugins/ivanti_security_controls/.CHECKSUM index 63b4f890e0..073e296eeb 100644 --- a/plugins/ivanti_security_controls/.CHECKSUM +++ b/plugins/ivanti_security_controls/.CHECKSUM @@ -1,67 +1,67 @@ { - "spec": "8c145534c75b3830b06f59ac8667464d", - "manifest": "7280daa95ea56f830dd832ebc5be0cfe", - "setup": "dbe66041fe2ce88bb7e50c61aec5a722", + "spec": "d858e3c0facc560db676448631ac7852", + "manifest": "090106828b61ab1e3609d209c5167cbf", + "setup": "8ae8af3f9327178507f252d9a10ddf84", "schemas": [ { "identifier": "create_patch_group_and_add_cves/schema.py", - "hash": "06e50a9ce549deddcc8a1a467ab60572" + "hash": "bf229b1017b63fb70cb979e58c0568f7" }, { "identifier": "create_patch_scan_template/schema.py", - "hash": "78bb62a5e3f77055e46a6980519579d3" + "hash": "d9a933f9a6788c0f185c26431dc767ca" }, { "identifier": "get_agent/schema.py", - "hash": "bd4900e521eb00ef0c86d6b73fd1fb55" + "hash": "2c0907168a0d568700aac4c2b03d22be" }, { "identifier": "get_agent_status/schema.py", - "hash": "04de1dd48f8167524309551da6bbdc9e" + "hash": "33dd6cf2981dbaf4a22511abf08da20b" }, { "identifier": "get_agents/schema.py", - "hash": "79eee50d7e4264b758433475be282045" + "hash": "33bd0a872a2b665124bc3eb9641e88c7" }, { "identifier": "get_patch_deployment/schema.py", - "hash": "1e509a6baadb1be01473919aad6cf8e2" + "hash": "509696643cb98711c00f981a4c70fc37" }, { "identifier": "get_patch_deployment_template_id/schema.py", - "hash": "8f8b04af979211d7da2d89352799f073" + "hash": "239749e0dfb8c19f44a9c140d5a36572" }, { "identifier": "get_patch_details/schema.py", - "hash": "77501bf845fbd281c9007415d7615023" + "hash": "34b95df5c06ac49ca74e8d31187edf3e" }, { "identifier": "get_patch_scan_status/schema.py", - "hash": "88247e5f1e9d9fa4eeae0a8030aa6b2f" + "hash": "9f6865790dae9cc151fb7dc2235961ef" }, { "identifier": "get_scanned_machine_details/schema.py", - "hash": "f13b58495b12f1edbedfdb395dd55eba" + "hash": "fe5b81786dbc1724057a0349713c4601" }, { "identifier": "search_patches/schema.py", - "hash": "fc344937b62340d0da188153afe688b4" + "hash": "d716ed9ff10ca0db1cf16f1da18c6870" }, { "identifier": "start_patch_deployment/schema.py", - "hash": "a423b291913b7ba6b191f11400bb9d92" + "hash": "c04669ef4b5e925a04bcbe2a55d66566" }, { "identifier": "start_patch_scan/schema.py", - "hash": "4f8149da8fdda6a4657ecbc8f3089371" + "hash": "0e53911633c22e945f98168ee5cf04b6" }, { "identifier": "update_patch_group/schema.py", - "hash": "9155a31486b858b4a0dfbe051557b3b3" + "hash": "64bb9603ae96bc9ebd109c969fad2e9c" }, { "identifier": "connection/schema.py", - "hash": "321c8a40358f95b991a244fabcdfc1c8" + "hash": "36bf3b8f4426da916c2dae8f865a5175" } ] } \ No newline at end of file diff --git a/plugins/ivanti_security_controls/Dockerfile b/plugins/ivanti_security_controls/Dockerfile index e0f8f9db18..47e2703500 100755 --- a/plugins/ivanti_security_controls/Dockerfile +++ b/plugins/ivanti_security_controls/Dockerfile @@ -1,26 +1,20 @@ -FROM rapid7/insightconnect-python-3-38-plugin:4 -# Refer to the following documentation for available SDK parent images: https://docs.rapid7.com/insightconnect/sdk-guide/#sdk-guide +FROM --platform=linux/amd64 rapid7/insightconnect-python-3-slim-plugin:6.1.4 LABEL organization=rapid7 LABEL sdk=python -# Add any custom package dependencies here -# NOTE: Add pip packages to requirements.txt - -# End package dependencies - -# Add source code WORKDIR /python/src + ADD ./plugin.spec.yaml /plugin.spec.yaml -ADD . /python/src +ADD ./requirements.txt /python/src/requirements.txt -# Install pip dependencies RUN if [ -f requirements.txt ]; then pip install -r requirements.txt; fi -# Install plugin +ADD . /python/src + RUN python setup.py build && python setup.py install # User to run plugin code. The two supported users are: root, nobody -USER root +USER nobody ENTRYPOINT ["/usr/local/bin/icon_ivanti_security_controls"] diff --git a/plugins/ivanti_security_controls/bin/icon_ivanti_security_controls b/plugins/ivanti_security_controls/bin/icon_ivanti_security_controls index 6726f0f0bc..2935db5a19 100755 --- a/plugins/ivanti_security_controls/bin/icon_ivanti_security_controls +++ b/plugins/ivanti_security_controls/bin/icon_ivanti_security_controls @@ -1,54 +1,68 @@ #!/usr/bin/env python -# GENERATED BY KOMAND SDK - DO NOT EDIT -import insightconnect_plugin_runtime -from icon_ivanti_security_controls import connection, actions, triggers - +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT +import os +import json +from sys import argv Name = "Ivanti Security Controls" Vendor = "rapid7" -Version = "1.5.0" +Version = "1.5.1" Description = "Ivanti Security Controls is a unified IT management platform used for managing and protecting through Patch Management, Application Control, and Asset Inventory functionality" -class ICONIvantiSecurityControls(insightconnect_plugin_runtime.Plugin): - def __init__(self): - super(self.__class__, self).__init__( - name=Name, - vendor=Vendor, +def main(): + if 'http' in argv: + if os.environ.get("GUNICORN_CONFIG_FILE"): + with open(os.environ.get("GUNICORN_CONFIG_FILE")) as gf: + gunicorn_cfg = json.load(gf) + if gunicorn_cfg.get("worker_class", "sync") == "gevent": + from gevent import monkey + monkey.patch_all() + elif 'gevent' in argv: + from gevent import monkey + monkey.patch_all() + + import insightconnect_plugin_runtime + from icon_ivanti_security_controls import connection, actions, triggers, tasks + + class ICONIvantiSecurityControls(insightconnect_plugin_runtime.Plugin): + def __init__(self): + super(self.__class__, self).__init__( + name=Name, + vendor=Vendor, version=Version, description=Description, connection=connection.Connection() - ) - self.add_action(actions.CreatePatchGroupAndAddCves()) - - self.add_action(actions.CreatePatchScanTemplate()) - - self.add_action(actions.GetAgent()) - - self.add_action(actions.GetAgentStatus()) - - self.add_action(actions.GetAgents()) - - self.add_action(actions.GetPatchDeployment()) - - self.add_action(actions.GetPatchDeploymentTemplateId()) - - self.add_action(actions.GetPatchDetails()) + ) + self.add_action(actions.GetAgent()) + + self.add_action(actions.GetAgents()) + + self.add_action(actions.GetAgentStatus()) + + self.add_action(actions.StartPatchScan()) + + self.add_action(actions.GetPatchScanStatus()) + + self.add_action(actions.GetScannedMachineDetails()) + + self.add_action(actions.SearchPatches()) + + self.add_action(actions.GetPatchDetails()) + + self.add_action(actions.GetPatchDeployment()) + + self.add_action(actions.GetPatchDeploymentTemplateId()) + + self.add_action(actions.StartPatchDeployment()) + + self.add_action(actions.CreatePatchScanTemplate()) + + self.add_action(actions.CreatePatchGroupAndAddCves()) + + self.add_action(actions.UpdatePatchGroup()) + - self.add_action(actions.GetPatchScanStatus()) - - self.add_action(actions.GetScannedMachineDetails()) - - self.add_action(actions.SearchPatches()) - - self.add_action(actions.StartPatchDeployment()) - - self.add_action(actions.StartPatchScan()) - - self.add_action(actions.UpdatePatchGroup()) - - -def main(): """Run plugin""" cli = insightconnect_plugin_runtime.CLI(ICONIvantiSecurityControls()) cli.run() diff --git a/plugins/ivanti_security_controls/help.md b/plugins/ivanti_security_controls/help.md old mode 100755 new mode 100644 index 3c666ef695..857bb969db --- a/plugins/ivanti_security_controls/help.md +++ b/plugins/ivanti_security_controls/help.md @@ -1,6 +1,6 @@ # Description -Ivanti Security Controls is a unified IT management platform used for managing and protecting through Patch Management, Application Control, and Asset Inventory functionality. +Ivanti Security Controls is a unified IT management platform used for managing and protecting through Patch Management, Application Control, and Asset Inventory functionality # Key Features @@ -14,26 +14,30 @@ Ivanti Security Controls is a unified IT management platform used for managing a * Username and password of Windows account where Ivanti Security Controls is installed * (Recommended) Ivanti Security Controls certificate in order to enforce certificate verification +# Supported Product Versions + +* 2024-11-1 + # Documentation ## Setup -The connection configuration accepts the following parameters: +The connection configuration accepts the following parameters: -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|credentials|credential_username_password|None|True|Username and password|None|{"username":"user1", "password":"mypassword"}| -|host|string|None|True|Enter the hostname|None|example.com| -|port|integer|3121|True|Enter the port|None|3121| -|ssl_verify|boolean|True|True|Validate certificate|None|True| +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|credentials|credential_username_password|None|True|Username and password|None|{"username":"user1", "password":"mypassword"}|None|None| +|host|string|None|True|Enter the hostname|None|example.com|None|None| +|port|integer|3121|True|Enter the port|None|3121|None|None| +|ssl_verify|boolean|True|True|Validate certificate|None|True|None|None| Example input: ``` { "credentials": { - "username": "user1", - "password": "mypassword" + "password": "mypassword", + "username": "user1" }, "host": "example.com", "port": 3121, @@ -45,126 +49,19 @@ Example input: ### Actions -#### Update Patch Group - -This action is used to add CVEs or Patch IDs to an existing patch group. - -##### Input - -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|patch_group|string|None|True|Name or ID of an existing patch group|None|Patch Group created from InsightConnect| -|vulnerability_identifier|[]string|None|True|List of patch IDs or CVEs to add to an existing patch group|None|["CVE-2019-0708", "12345"]| - -Example input: - -``` -{ - "patch_group": "Patch Group created from InsightConnect", - "vulnerability_identifier": [ - "CVE-2019-0708", - "12345" - ] -} -``` - -##### Output - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|success|boolean|True|Was operation successful| - -Example output: - -``` -{ - "success": true -} -``` - -#### Start Patch Deployment - -This action is used to start a patch deployment. It accepts a scan and template by ID or by name. - -Note that scan names are not unique in Ivanti, in the event that there are duplicate names, the action will automatically use the latest scan. If you want a specific scan that is not the latest, pass in the scan ID instead. - - -##### Input - -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|download_patches|boolean|None|True|Boolean to initiate patch download before starting the deployment|None|False| -|scan_identifier|string|None|True|A scan ID or scan name|None|01234567-89AB-CDEF-0123-456789ABCDEF| -|template_identifier|string|None|True|A template ID or template name|None|Deployment Template created from InsightConnect| - -Example input: - -``` -{ - "download_patches": false, - "scan_identifier": "01234567-89AB-CDEF-0123-456789ABCDEF", - "template_identifier": "Deployment Template created from InsightConnect" -} -``` - -##### Output - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|success|boolean|True|Was operation successful| - -Example output: - -``` -{ - "success": true -} -``` - -#### Get Patch Deployment Template ID - -This action is used to get a Patch Deployment Template ID by searching for the Patch Deployment Template Name. - -##### Input - -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|patch_deployment_template_name|string|None|True|The name of the patch deployment template|None|Patch Deployment Template created from InsightConnect| - -Example input: - -``` -{ - "patch_deployment_template_name": "Patch Deployment Template created from InsightConnect" -} -``` - -##### Output - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|patch_deployment_template_id|string|True|The ID of the patch deployment template| - -Example output: - -``` -{ - "patch_deployment_template_id": "01234567-89AB-CDEF-0123-456789ABCDEF" -} -``` #### Create Patch Group -This action is used to create a new patch group with CVEs. +This action is used to create a new patch group with CVEs ##### Input -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|cves|[]string|None|True|The CVEs that should be included in the new patch group|None|["cve-2019-0701", "CVE-2019-0708"]| -|name|string|None|True|The name of the new patch group|None|New Patch Group| -|path|string|None|False|The path that describes the location of the patch group within the Patch Templates and Groups list in the navigation pane|None|Lab\Servers| - +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|cves|[]string|None|True|The CVEs that should be included in the new patch group|None|["cve-2019-0701", "CVE-2019-0708"]|None|None| +|name|string|None|True|The name of the new patch group|None|New Patch Group|None|None| +|path|string|None|False|The path that describes the location of the patch group within the Patch Templates and Groups list in the navigation pane|None|Lab\Servers|None|None| + Example input: ``` @@ -180,10 +77,10 @@ Example input: ##### Output -|Name|Type|Required|Description| -|----|----|--------|-----------| -|patch_group|patch_group|True|Detailed information about the patch group| - +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|patch_group|patch_group|True|Detailed information about the patch group|None| + Example output: ``` @@ -208,18 +105,18 @@ Example output: #### Create Patch Scan Template -This action is used to create a new patch scan template. +This action is used to create a new patch scan template ##### Input -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|description|string|None|False|Description that explains the purpose of this patch scan template|None|Patch Scan Template created from InsightConnect| -|name|string|None|True|Name of the patch scan template|None|ExamplePatchScanTemplate| -|patchGroupIds|[]integer|None|True|The IDs of the patch groups to use|None|1| -|path|string|None|False|Path to the location of the machine group within the Patch Scan Templates list in the navigation pane|None|Lab\Servers| -|threadCount|integer|None|False|Specifies maximum number of machines that can be simultaneously scanned during one patch scan|None|1| - +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|description|string|None|False|Description that explains the purpose of this patch scan template|None|Patch Scan Template created from InsightConnect|None|None| +|name|string|None|True|Name of the patch scan template|None|ExamplePatchScanTemplate|None|None| +|patchGroupIds|[]integer|None|True|The IDs of the patch groups to use|None|1|None|None| +|path|string|None|False|Path to the location of the machine group within the Patch Scan Templates list in the navigation pane|None|Lab\Servers|None|None| +|threadCount|integer|None|False|Specifies maximum number of machines that can be simultaneously scanned during one patch scan|None|1|None|None| + Example input: ``` @@ -234,59 +131,59 @@ Example input: ##### Output -|Name|Type|Required|Description| -|----|----|--------|-----------| -|patch_scan_template|patch_scan_template|True|Detailed information about the patch scan template| - +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|patch_scan_template|patch_scan_template|True|Detailed information about the patch scan template|None| + Example output: ``` { - "patch_scan_template": { - "creator": "IVANTI-W16\\Administrator", - "description": "Example Patch Scan Templete Description", - "id": "4374292d-3465-4d77-b752-c4eccd91bba5", - "isSystem": false, - "links": { - "self": { - "href": "https://example.com:3121/st/console/api/v1.0/patch/scanTemplates/4374292d-3465-4d77-b752-c4eccd91bba5" - }, - "usedby": { - "href": "https://example.com:3121/st/console/api/v1.0/patch/scanTemplates/4374292d-3465-4d77-b752-c4eccd91bba5/usedby" - } - }, - "name": "example-patch-scan-template", - "patchFilter": { - "patchGroupFilterType": "Scan", - "patchGroupIds": [ - 2, - 3 - ], - "patchPropertyFilter": { - "customActions": false, - "nonSecurityPatchSeverities": "None", - "securityPatchSeverities": "None", - "securityTools": false - }, - "scanFor": "NecessaryExplicitlyInstalled", - "softwareDistribution": false, - "vendorFamilyProductFilter": {} - } + "patch_scan_template": { + "creator": "IVANTI-W16\\Administrator", + "description": "Example Patch Scan Templete Description", + "id": "4374292d-3465-4d77-b752-c4eccd91bba5", + "isSystem": false, + "links": { + "self": { + "href": "https://example.com:3121/st/console/api/v1.0/patch/scanTemplates/4374292d-3465-4d77-b752-c4eccd91bba5" + }, + "usedby": { + "href": "https://example.com:3121/st/console/api/v1.0/patch/scanTemplates/4374292d-3465-4d77-b752-c4eccd91bba5/usedby" + } + }, + "name": "example-patch-scan-template", + "patchFilter": { + "patchGroupFilterType": "Scan", + "patchGroupIds": [ + 2, + 3 + ], + "patchPropertyFilter": { + "customActions": false, + "nonSecurityPatchSeverities": "None", + "securityPatchSeverities": "None", + "securityTools": false + }, + "scanFor": "NecessaryExplicitlyInstalled", + "softwareDistribution": false, + "vendorFamilyProductFilter": {} } + } } ``` #### Get Patch Deployment -This action is used to retrieve information about a specific patch deployment. +This action is used to retrieve information about a specific patch deployment ##### Input -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|deployment_id|string|None|True|Patch deployment ID|None|5dbcb89f-eec3-4182-a9aa-1e6074fb0acb| -|machine_id|integer|None|False|ID of a machine involved with a specific patch deployment|None|7| - +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|deployment_id|string|None|True|Patch deployment ID|None|5dbcb89f-eec3-4182-a9aa-1e6074fb0acb|None|None| +|machine_id|integer|None|False|ID of a machine involved with a specific patch deployment|None|7|None|None| + Example input: ``` @@ -298,11 +195,11 @@ Example input: ##### Output -|Name|Type|Required|Description| -|----|----|--------|-----------| -|machine_information|machine_deploy_state|True|Information about a machine involved with the patch deployment| -|patch_deployment_details|patch_deployment|True|Detailed information about a specific deployment| - +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|machine_information|machine_deploy_state|True|Information about a machine involved with the patch deployment|None| +|patch_deployment_details|patch_deployment|True|Detailed information about a specific deployment|None| + Example output: ``` @@ -363,7 +260,38 @@ Example output: } ] } +``` + +#### Get Patch Deployment Template ID + +This action is used to get a Patch Deployment Template ID by searching for the Patch Deployment Template Name + +##### Input + +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|patch_deployment_template_name|string|None|True|The name of the patch deployment template|None|Patch Deployment Template created from InsightConnect|None|None| + +Example input: +``` +{ + "patch_deployment_template_name": "Patch Deployment Template created from InsightConnect" +} +``` + +##### Output + +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|patch_deployment_template_id|string|True|The ID of the patch deployment template|01234567-89AB-CDEF-0123-456789ABCDEF| + +Example output: + +``` +{ + "patch_deployment_template_id": "01234567-89AB-CDEF-0123-456789ABCDEF" +} ``` #### Get Patch Details @@ -372,10 +300,10 @@ This action is used to retrieve information about a patch from Ivanti Security C ##### Input -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|id|integer|None|True|The vulnerability ID|None|4693| - +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|id|integer|None|True|The vulnerability ID|None|4693|None|None| + Example input: ``` @@ -386,10 +314,10 @@ Example input: ##### Output -|Name|Type|Required|Description| -|----|----|--------|-----------| -|patch|vulnerability|True|Detailed information about a patch| - +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|patch|vulnerability|True|Detailed information about a patch|None| + Example output: ``` @@ -422,14 +350,14 @@ Example output: #### Search Patches -This action is used to find and display detailed information about patch. +This action is used to find and display detailed information about patch ##### Input -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|security_id|[]string|None|True|Security Vulnerability ID|None|["MS99-031", "Q240346", "CVE-2015-4485", "4693"]| - +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|security_id|[]string|None|True|Security Vulnerability ID|None|["MS99-031", "Q240346", "CVE-2015-4485", "4693"]|None|None| + Example input: ``` @@ -445,10 +373,10 @@ Example input: ##### Output -|Name|Type|Required|Description| -|----|----|--------|-----------| -|vulnerabilities|[]vulnerability|True|Details about an agent| - +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|vulnerabilities|[]vulnerability|True|Details about an agent|None| + Example output: ``` @@ -481,24 +409,63 @@ Example output: } ``` -#### Start a Patch Scan +#### Start Patch Deployment + +This action is used to start a patch deployment. It accepts a scan and template by ID or by name. + +Note that scan names are not unique in Ivanti, in the event that there are duplicate names, the action will automatically use the latest scan. If you want a specific scan that is not the latest, pass in the scan ID instead. -This action is used to start a patch scan. ##### Input -|Name|Type|Default|Required|Description|Enum|Example| -|----|----|-------|--------|-----------|----|-------| -|credential_id|string|None|False|Credential ID|None|01234567-89AB-CDEF-0123-456789ABCDEF| -|diagnostic_trace_enabled|boolean|None|False|An indication whether diagnostics tracing should be enabled during scan|None|False| -|hostnames|[]string|None|False|Hostnames - Either hostnames or machine group IDs must be specified|None|hostname-1| -|machine_group_ids|[]string|None|False|List of machine groups to scan. Either hostnames or machine group IDs must be specified|None|["1", "2"]| -|max_poll_time|integer|300|True|Max poll time|None|300| -|name|string|None|False|Name to be given to scan|None|test-scan| -|run_as_credential_id|string|None|False|Reference to a credential to use to start a scan. Overwrites RunAsDefault behavior|None|01234567-89AB-CDEF-0123-456789ABCDEF| -|template_id|string|None|True|Patch scan template ID|None|01234567-89AB-CDEF-0123-456789ABCDEF| -|use_machine_credential|boolean|None|False|An indication whether to use machine credentials. If No is specified, then either group-level credentials, default credentials or integrated Windows authentication credentials (in that order) will be used. This parameter is only used if an endpoint name is specified|None|False| +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|download_patches|boolean|None|True|Boolean to initiate patch download before starting the deployment|None|False|None|None| +|scan_identifier|string|None|True|A scan ID or scan name|None|01234567-89AB-CDEF-0123-456789ABCDEF|None|None| +|template_identifier|string|None|True|A template ID or template name|None|Deployment Template created from InsightConnect|None|None| + +Example input: + +``` +{ + "download_patches": false, + "scan_identifier": "01234567-89AB-CDEF-0123-456789ABCDEF", + "template_identifier": "Deployment Template created from InsightConnect" +} +``` + +##### Output + +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|success|boolean|True|Was operation successful|True| + +Example output: + +``` +{ + "success": true +} +``` + +#### Start a Patch Scan + +This action is used to start a patch scan +##### Input + +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|credential_id|string|None|False|Credential ID|None|01234567-89AB-CDEF-0123-456789ABCDEF|None|None| +|diagnostic_trace_enabled|boolean|None|False|An indication whether diagnostics tracing should be enabled during scan|None|False|None|None| +|hostnames|[]string|None|False|Hostnames - Either hostnames or machine group IDs must be specified|None|hostname-1|None|None| +|machine_group_ids|[]string|None|False|List of machine groups to scan. Either hostnames or machine group IDs must be specified|None|["1", "2"]|None|None| +|max_poll_time|integer|300|True|Max poll time|None|300|None|None| +|name|string|None|False|Name to be given to scan|None|test-scan|None|None| +|run_as_credential_id|string|None|False|Reference to a credential to use to start a scan. Overwrites RunAsDefault behavior|None|01234567-89AB-CDEF-0123-456789ABCDEF|None|None| +|template_id|string|None|True|Patch scan template ID|None|01234567-89AB-CDEF-0123-456789ABCDEF|None|None| +|use_machine_credential|boolean|None|False|An indication whether to use machine credentials. If No is specified, then either group-level credentials, default credentials or integrated Windows authentication credentials (in that order) will be used. This parameter is only used if an endpoint name is specified|None|False|None|None| + Example input: ``` @@ -520,10 +487,10 @@ Example input: ##### Output -|Name|Type|Required|Description| -|----|----|--------|-----------| -|scan_details|scan_details|True|Scan details| - +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|scan_details|scan_details|True|Scan details|None| + Example output: ``` @@ -553,8 +520,8 @@ This action is used to get scanned machine details. |Name|Type|Default|Required|Description|Enum|Example| |----|----|-------|--------|-----------|----|-------| -|hostname|string|None|True|Hostname|None|hostname-1| -|scan_id|string|None|True|Scan ID|None|01234567-89AB-CDEF-0123-456789ABCDEF| +|scan_id|string|None|True|Scan ID|None|01234567-89AB-CDEF-0123-456789ABCDEF|None|None| +|hostname|string|None|True|Hostname|None|hostname-1|None|None| Example input: @@ -569,8 +536,8 @@ Example input: |Name|Type|Required|Description| |----|----|--------|-----------| -|detected_patches|[]detected_patch|True|Detected patches| -|patch_scan_machine|patch_scan_machine|True|Patch scan machine| +|patch_scan_machine|patch_scan_machine|True|Patch scan machine|None| +|detected_patches|[]detected_patch|True|Detected patches|None| Example output: @@ -604,6 +571,43 @@ Example output: } ``` +#### Update Patch Group + +This action is used to add CVEs or Patch IDs to an existing patch group. + +##### Input + +|Name|Type|Default|Required|Description|Enum|Example|Placeholder|Tooltip| +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +|patch_group|string|None|True|Name or ID of an existing patch group|None|Patch Group created from InsightConnect|None|None| +|vulnerability_identifier|[]string|None|True|List of patch IDs or CVEs to add to an existing patch group|None|["CVE-2019-0708", "12345"]|None|None| + +Example input: + +``` +{ + "patch_group": "Patch Group created from InsightConnect", + "vulnerability_identifier": [ + "CVE-2019-0708", + "12345" + ] +} +``` + +##### Output + +|Name|Type|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | +|success|boolean|True|Was operation successful|True| + +Example output: + +``` +{ + "success": true +} +``` + #### Get Patch Scan Status This action is used to get patch scan status. @@ -612,7 +616,7 @@ This action is used to get patch scan status. |Name|Type|Default|Required|Description|Enum|Example| |----|----|-------|--------|-----------|----|-------| -|scan_id|string|None|True|Scan ID|None|01234567-89AB-CDEF-0123-456789ABCDEF| +|scan_id|string|None|True|Scan ID|None|01234567-89AB-CDEF-0123-456789ABCDEF|None|None| Example input: @@ -626,8 +630,7 @@ Example input: |Name|Type|Required|Description| |----|----|--------|-----------| -|patch_scan_status_details|patch_scan_status_details|True|Patch scan status details| - +|patch_scan_status_details|patch_scan_status_details|True|Patch scan status details|None| Example output: ``` @@ -671,19 +674,19 @@ Example output: } ], "patch_scan_machine": { - "completedOn": "2020-05-12T21:53:57.71Z", - "domain": "WORKGROUP", - "errorNumber": 0, - "id": 72, - "installedPatchCount": 16, - "links": { - "patches": { - "href": "https://localhost:3121/st/console/api/v1.0/patch/scans/f447bd51-de32-4bd6-a28e-ad834694d5ac/machines/72/patches" - } - }, - "missingPatchCount": 3, - "missingServicePackCount": 1, - "name": "hostname-1" + "completedOn": "2020-05-12T21:53:57.71Z", + "domain": "WORKGROUP", + "errorNumber": 0, + "id": 72, + "installedPatchCount": 16, + "links": { + "patches": { + "href": "https://localhost:3121/st/console/api/v1.0/patch/scans/f447bd51-de32-4bd6-a28e-ad834694d5ac/machines/72/patches" + } + }, + "missingPatchCount": 3, + "missingServicePackCount": 1, + "name": "hostname-1" } } ``` @@ -696,8 +699,8 @@ This action is used to retrieve Agent from Ivanti Security Controls. |Name|Type|Default|Required|Description|Enum|Example| |----|----|-------|--------|-----------|----|-------| -|agent_configuration_filter|string|All|False|Filters agents based on listening configuration|['Listening', 'Not Listening', 'All']|All| -|name_filter|string|None|False|Filters agents where host or DNS name equals this value|None|hostname-1| +|agent_configuration_filter|string|All|False|Filters agents based on listening configuration|["Listening", "Not Listening", "All"]|All|None|None| +|name_filter|string|None|False|Filters agents where host or DNS name equals this value|None|hostname-1|None|None| Example input: @@ -712,8 +715,7 @@ Example input: |Name|Type|Required|Description| |----|----|--------|-----------| -|agents|[]agent_detail|False|List of agent details| -|count|integer|False|Number of agents returned| +|count|integer|False|Number of agents returned|1|', '|agents|[]agent_detail|False|List of agent details|None| Example output: @@ -761,7 +763,7 @@ This action is used to retrieve Agent Status from Ivanti Security Controls. |Name|Type|Default|Required|Description|Enum|Example| |----|----|-------|--------|-----------|----|-------| -|id|string|None|True|Agent Identifier|None|ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCD| +|id|string|None|True|Agent Identifier|None|ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCD|None|None| Example input: @@ -775,7 +777,7 @@ Example input: |Name|Type|Required|Description| |----|----|--------|-----------| -|agent_status|agent_status|True|Agent status with details| +|agent_status|agent_status|True|Agent status with details|None| Example output: @@ -816,7 +818,7 @@ This action is used to retrieve Agent from Ivanti Security Controls. |Name|Type|Default|Required|Description|Enum|Example| |----|----|-------|--------|-----------|----|-------| -|id|string|None|True|Agent Identifier|None|ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCD| +|id|string|None|True|Agent Identifier|None|ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCD|None|None| Example input: @@ -830,7 +832,7 @@ Example input: |Name|Type|Required|Description| |----|----|--------|-----------| -|agent|agent_detail|True|Details about an agent| +|agent|agent_detail|True|Details about an agent|None| Example output: @@ -869,114 +871,227 @@ Example output: ``` ### Triggers + +*This plugin does not contain any triggers.* +### Tasks + +*This plugin does not contain any tasks.* + +### Custom Types + +**agent_detail** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Agent ID|string|None|True|The agent ID|None| +|Assigned Policy ID|string|None|False|The unique identifier of the policy that is in effect for this agent|None| +|DNS Name|string|None|False|The DNS name of the agent machine|None| +|Domain|string|None|False|The domain of the agent machine|None| +|Framework Version|string|None|False|The installed agent framework version|None| +|Is Listening|boolean|None|False|Specifies if the agent is a listening agent|None| +|Last Check-In|string|None|False|The date and time of the most recent check-in|None| +|Last Known IP Address|string|None|False|The last known IP address of the agent machine|None| +|Agent Links|object|None|False|Shows the related URLs for the agent|None| +|Listening Port|integer|None|False|The listening port number|None| +|Machine Name|string|None|False|The agent machine's host name|None| +|Reported Policy ID|string|None|False|The agent policy ID|None| +|Status|string|None|True|The current status of the agent|None| + +**agent_status** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Agent ID|string|None|True|The agent ID|None| +|Framework Version|object|None|False|The installed agent framework version|None| +|Installed Packages|[]string|None|False|The list of engines installed on the agent machine|None| +|Last Check-In|string|None|False|The date and time of the most recent check-in|None| +|Agent Links|object|None|False|Shows the related URLs for the agent|None| +|Machine Name|string|None|False|The agent machine's host name|None| +|Reported On|string|None|False|The time the information was gathered from the agent machine|None| +|Running Policy ID|string|None|False|The agent's running policy ID|None| +|Running Policy Version|integer|None|False|The agent's policy ID|None| + +**patch_scan_machine** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Completed On|string|None|False|The date and time that the machine assessment was completed|None| +|Domain|string|None|False|The domain short-name of the assessed machine|None| +|Error Description|string|None|False|Description of the patch scan or resolution error|None| +|Error Number|integer|None|False|An error code representing a resolution or assessment failure|None| +|ID|integer|None|False|The unique identifier of the machine patch assessment|None| +|Installed Patch Count|integer|None|False|The total number of installed patches found in the assessment|None| +|Links|object|None|False|Shows the related URLs|None| +|Missing Patch Count|integer|None|False|The total number of missing patches detected in the assessment|None| +|Missing Service Pack Count|integer|None|False|The total number of missing service packs detected in the assessment|None| +|Host Name|string|None|False|The resolved short-name or host name of the machine|None| +|Virtual Machine Path|string|None|False|The virtual machine path if this is a hosted VM|None| +|Virtual Server|string|None|False|The virtual machine server name if this is a hosted VM|None| + +**scan_details** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Scan ID|string|None|True|Scan ID|None| +|Is Complete|boolean|None|True|Is complete|None| +|Scan Links|object|None|True|Scan links|None| +|Scan Name|string|None|False|Scan name|None| +|Scan Type|string|None|True|Scan Type|None| +|Scan Start Time|string|None|True|Scan start time|None| +|Update Time|string|None|True|Update Time|None| +|Username|string|None|True|Username|None| + +**patch_scan_status_details** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Console Name|string|None|True|Console Name|None| +|Definition Date|string|None|False|Definition Date|None| +|Definition Version|string|None|False|Definition version|None| +|Expected Result Total|integer|None|True|Expected result total count|None| +|Scan ID|string|None|True|Scan ID|None| +|Is Complete|boolean|None|True|Is Complete|None| +|Links|object|None|True|Scan links|None| +|Scan Name|string|None|True|Scan name|None| +|Received Result Count|integer|None|True|Received result count|None| +|Scan Type|string|None|True|Scan Type|None| +|Scan Start Time|string|None|True|Scan start time|None| +|Update Time|string|None|True|Update time|None| +|Username|string|None|True|Username|None| + +**detected_patch** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Bulletin ID|string|None|True|Bulletin ID|None| +|Culture Name|string|None|True|Culture name|None| +|KB|string|None|True|KB issued by the vendor of the patch|None| +|Links|object|None|False|Shows the related URLs|None| +|Patch ID|string|None|True|Patch ID|None| +|Patch Type|string|None|True|Patch Type|None| +|Product ID|string|None|True|Product ID|None| +|Product Name|string|None|True|Product name|None| +|Scan Item ID|integer|None|True|Scan ID of the patch summary|None| +|Scan State|string|None|True|The state of the patch installation|None| +|Service Pack Name|string|None|True|The name of the service pack to which the patch applies|None| +|Vendor Severity|string|None|True|The vendor-defined severity of the security risk or issue that this patch corrects|None| + +**next** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|HREF|string|None|False|Href|None| + +**links** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Next|next|None|False|Next|None| + +**links_self** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Self|next|None|False|Self|None| + +**vulnerability** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Bulletin ID|string|None|False|Bulletinid|None| +|CVE|[]string|None|False|CVE|None| +|Patch ID|integer|None|False|Id|None| +|Is Supported|boolean|None|False|Issupported|None| +|Kb|string|None|False|Kb|None| +|Links|links_self|None|False|Links|None| +|Patchids|[]string|None|False|Patch IDs|None| +|Patchtype|string|None|False|Patch Type|None| +|Releasedate|string|None|False|Release Date|None| +|Replaced By|[]string|None|False|Replacedby|None| + +**patch_deployment** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Completed Machine Count|integer|None|False|Number of machines that has the deployment completed|None| +|Creator|string|None|False|Initiator of the deployment|None| +|Expected Machine Count|integer|None|False|Number of machines in this deployment|None| +|ID|string|None|True|The unique operation identifier assigned to the patch deployment|None| +|Completed|boolean|None|False|Completion status of the deployment|None| +|Last Updated On|string|None|False|Date of receipt of the last status update|None| +|Links|object|None|False|Shows the related URLs for the deployment, the machines and the template|None| +|Name|string|None|False|Name of the deployment template|None| +|Started On|string|None|False|Deployment start date|None| + +**machine_deploy_state** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Address|string|None|False|The IP address of the machine|None| +|Completed Patches|integer|None|False|The count of in-progress patches|None| +|DNS Name|string|None|False|The DNS name of the machine|None| +|Domain|string|None|False|The domain name of the machine|None| +|Error Code|integer|None|False|The error code reported on failure by the machine|None| +|ID|integer|None|False|The unique machine identifier for the machine being deployed to|None| +|Last Updated|string|None|False|Specifies when the deployment status was last updated|None| +|Links|object|None|False|Shows the related URL for the deployment to the machine|None| +|Name|string|None|False|The hostname of the machine|None| +|Overall State|string|None|False|The overall state of the machine deployment|None| +|Patch States|[]object|None|False|The status of each patch in the deployment|None| +|Status Description|string|None|False|A description of the status of the deployment|None| + +**patch_property_filter** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Custom Actions|boolean|None|False|Custom actions|None| +|Non Security Patch Severities|string|None|False|The non-security patch severities|None| +|Security Patch Severities|string|None|False|The security patch severities|None| +|Security Tools|boolean|None|False|Security tools|None| + +**patch_filter** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Patch File Path|string|None|False|The patch file path|None| +|Patch Group Filter Type|string|None|False|The patch's filter describes how this filter will be applied. The values can be Scan, Skip, or None|None| +|Patch Group IDs|[]integer|None|False|The IDs of the patch groups to use|None| +|Patch Property Filter|patch_property_filter|None|False|Patch property filter (security, non-security, critical, etc.)|None| +|Scan For|string|None|False|Gets or sets the type of patches to scan for|None| +|Software Distribution|boolean|None|False|Is software distribution included in the scan|None| +|Vendor Family Product Filter|object|None|False|Vendor and family product hierarchy|None| + +**patch_scan_template** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|Creator|string|None|False|The name of the person who created the template|None| +|Description|string|None|False|Provides a description that explains the purpose of this patch scan template|None| +|ID|string|None|False|Specifies the ID of the patch scan template|None| +|Is System|boolean|None|False|Indicates if this is a system template|None| +|Links|object|None|False|Shows the related URLs for each patch scan template and for the usedby list|None| +|Name|string|None|False|Specifies the patch scan template name|None| +|Patch Filter|patch_filter|None|False|Specifies the mode|None| +|Path|string|None|False|The path that describes the location of the machine group within the Patch Scan Templates list in the navigation pane|None| +|Thread Count|integer|None|False|Specifies maximum number of machines that can be simultaneously scanned during one patch scan|None| + +**patch_group** + +|Name|Type|Default|Required|Description|Example| +| :--- | :--- | :--- | :--- | :--- | :--- | +|ID|integer|None|False|The patch group ID|None| +|Links|object|None|False|Shows the related URLs for the patch group|None| +|Name|string|None|False|The name of the patch group|None| +|Path|string|None|False|The path that describes the location of the patch group within the Windows Patch Groups list in the navigation pane|None| -_This plugin does not contain any triggers._ - -### Custom Output Types - -#### agent_detail - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|Agent ID|string|True|The agent ID| -|Assigned Policy ID|string|False|The unique identifier of the policy that is in effect for this agent| -|DNS Name|string|False|The DNS name of the agent machine| -|Domain|string|False|The domain of the agent machine| -|Framework Version|string|False|The installed agent framework version| -|Is Listening|boolean|False|Specifies if the agent is a listening agent| -|Last Check-In|string|False|The date and time of the most recent check-in| -|Last Known IP Address|string|False|The last known IP address of the agent machine| -|Agent Links|object|False|Shows the related URLs for the agent| -|Listening Port|integer|False|The listening port number| -|Machine Name|string|False|The agent machine's host name| -|Reported Policy ID|string|False|The agent policy ID| -|Status|string|True|The current status of the agent| - -#### agent_status - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|Agent ID|string|True|The agent ID| -|Framework Version|object|False|The installed agent framework version| -|Installed Packages|[]string|False|The list of engines installed on the agent machine| -|Last Check-In|string|False|The date and time of the most recent check-in| -|Agent Links|object|False|Shows the related URLs for the agent| -|Machine Name|string|False|The agent machine's host name| -|Reported On|string|False|The time the information was gathered from the agent machine| -|Running Policy ID|string|False|The agent's running policy ID| -|Running Policy Version|integer|False|The agent's policy ID| - -#### detected_patch - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|Bulletin ID|string|True|Bulletin ID| -|Culture Name|string|True|Culture Name| -|KB|string|True|KB issued by the vendor of the patch| -|Links|object|False|Shows the related URLs| -|Patch ID|string|True|Patch ID| -|Patch Type|string|True|Patch Type| -|Product ID|string|True|Product ID| -|Product Name|string|True|Product name| -|Scan Item ID|integer|True|Scan ID of the patch summary| -|Scan State|string|True|The state of the patch installation| -|Service Pack Name|string|True|The name of the service pack to which the patch applies| -|Vendor Severity|string|True|The vendor-defined severity of the security risk or issue that this patch corrects.| - -#### patch_scan_machine - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|Completed On|string|False|The date and time that the machine assessment was completed| -|Domain|string|False|The domain short-name of the assessed machine| -|Error Description|string|False|Description of the patch scan or resolution error| -|Error Number|integer|False|An error code representing a resolution or assessment failure| -|ID|integer|False|The unique identifier of the machine patch assessment| -|Installed Patch Count|integer|False|The total number of installed patches found in the assessment| -|Links|object|False|Shows the related URLs| -|Missing Patch Count|integer|False|The total number of missing patches detected in the assessment| -|Missing Service Pack Count|integer|False|The total number of missing service packs detected in the assessment| -|Host Name|string|False|The resolved short-name or host name of the machine| -|Virtual Machine Path|string|False|The virtual machine path if this is a hosted VM| -|Virtual Server|string|False|The virtual machine server name if this is a hosted VM| - -#### patch_scan_status_details - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|Console Name|string|True|Console Name| -|Definition Date|string|False|Definition Date| -|Definition Version|string|False|Definition version| -|Expected Result Total|integer|True|Expected result total count| -|Scan ID|string|True|Scan ID| -|Is Complete|boolean|True|Is Complete| -|Links|object|True|Scan links| -|Scan Name|string|True|Scan name| -|Received Result Count|integer|True|Received result count| -|Scan Type|string|True|Scan Type| -|Scan Start Time|string|True|Scan start time| -|Update Time|string|True|Update Time| -|Username|string|True|Username| - -#### scan_details - -|Name|Type|Required|Description| -|----|----|--------|-----------| -|Scan ID|string|True|Scan ID| -|Is Complete|boolean|True|Is complete| -|Scan Links|object|True|Scan links| -|Scan Name|string|False|Scan name| -|Scan Type|string|True|Scan Type| -|Scan Start Time|string|True|Scan start time| -|Update Time|string|True|Update Time| -|Username|string|True|Username| ## Troubleshooting - -_This plugin does not contain any troubleshooting information._ + +*This plugin does not contain a troubleshooting.* # Version History +* 1.5.1 - Bumping requirements.txt | SDK bump to 6.1.4 * 1.5.0 - New action Update Patch Group * 1.4.0 - New actions Get Patch Deployment Template ID, Start Patch Deployment * 1.3.0 - New actions Create Patch Group and Add CVEs, Create Patch Scan Template @@ -988,7 +1103,8 @@ _This plugin does not contain any troubleshooting information._ # Links +* [Ivanti Security Controls](https://www.ivanti.com/products/security-controls) + ## References -* [Ivanti Security Controls](https://www.ivanti.com/products/security-controls) -* [Ivanti Security Controls API Documentation](https://help.ivanti.com/iv/help/en_US/isec/API/Topics/Welcome.htm) +* [Ivanti Security Controls API Documentation](https://help.ivanti.com/iv/help/en_US/isec/API/Topics/Welcome.htm) \ No newline at end of file diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/__init__.py index 645e611929..bd18f51c10 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/__init__.py @@ -1,15 +1,30 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT -from .create_patch_group_and_add_cves.action import CreatePatchGroupAndAddCves -from .create_patch_scan_template.action import CreatePatchScanTemplate +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT + from .get_agent.action import GetAgent -from .get_agent_status.action import GetAgentStatus + from .get_agents.action import GetAgents -from .get_patch_deployment.action import GetPatchDeployment -from .get_patch_deployment_template_id.action import GetPatchDeploymentTemplateId -from .get_patch_details.action import GetPatchDetails + +from .get_agent_status.action import GetAgentStatus + +from .start_patch_scan.action import StartPatchScan + from .get_patch_scan_status.action import GetPatchScanStatus + from .get_scanned_machine_details.action import GetScannedMachineDetails + from .search_patches.action import SearchPatches + +from .get_patch_details.action import GetPatchDetails + +from .get_patch_deployment.action import GetPatchDeployment + +from .get_patch_deployment_template_id.action import GetPatchDeploymentTemplateId + from .start_patch_deployment.action import StartPatchDeployment -from .start_patch_scan.action import StartPatchScan + +from .create_patch_scan_template.action import CreatePatchScanTemplate + +from .create_patch_group_and_add_cves.action import CreatePatchGroupAndAddCves + from .update_patch_group.action import UpdatePatchGroup + diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_group_and_add_cves/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_group_and_add_cves/__init__.py index 5da12ae1ff..86e2636648 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_group_and_add_cves/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_group_and_add_cves/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import CreatePatchGroupAndAddCves diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_group_and_add_cves/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_group_and_add_cves/schema.py index 18874fe825..a46325402b 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_group_and_add_cves/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_group_and_add_cves/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -11,14 +11,14 @@ class Input: CVES = "cves" NAME = "name" PATH = "path" - + class Output: PATCH_GROUP = "patch_group" - + class CreatePatchGroupAndAddCvesInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -48,7 +48,8 @@ class CreatePatchGroupAndAddCvesInput(insightconnect_plugin_runtime.Input): "required": [ "cves", "name" - ] + ], + "definitions": {} } """) @@ -57,7 +58,7 @@ def __init__(self): class CreatePatchGroupAndAddCvesOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_scan_template/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_scan_template/__init__.py index 9496c9a738..9e688b675f 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_scan_template/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_scan_template/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import CreatePatchScanTemplate diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_scan_template/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_scan_template/schema.py index b5324f3a31..8bd902fa8b 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_scan_template/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/create_patch_scan_template/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -13,14 +13,14 @@ class Input: PATCHGROUPIDS = "patchGroupIds" PATH = "path" THREADCOUNT = "threadCount" - + class Output: PATCH_SCAN_TEMPLATE = "patch_scan_template" - + class CreatePatchScanTemplateInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -62,7 +62,8 @@ class CreatePatchScanTemplateInput(insightconnect_plugin_runtime.Input): "required": [ "name", "patchGroupIds" - ] + ], + "definitions": {} } """) @@ -71,7 +72,7 @@ def __init__(self): class CreatePatchScanTemplateOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -87,6 +88,66 @@ class CreatePatchScanTemplateOutput(insightconnect_plugin_runtime.Output): "patch_scan_template" ], "definitions": { + "patch_scan_template": { + "type": "object", + "title": "patch_scan_template", + "properties": { + "creator": { + "type": "string", + "title": "Creator", + "description": "The name of the person who created the template", + "order": 1 + }, + "description": { + "type": "string", + "title": "Description", + "description": "Provides a description that explains the purpose of this patch scan template", + "order": 2 + }, + "id": { + "type": "string", + "title": "ID", + "description": "Specifies the ID of the patch scan template", + "order": 3 + }, + "isSystem": { + "type": "boolean", + "title": "Is System", + "description": "Indicates if this is a system template", + "order": 4 + }, + "links": { + "type": "object", + "title": "Links", + "description": "Shows the related URLs for each patch scan template and for the usedby list", + "order": 5 + }, + "name": { + "type": "string", + "title": "Name", + "description": "Specifies the patch scan template name", + "order": 6 + }, + "patchFilter": { + "$ref": "#/definitions/patch_filter", + "title": "Patch Filter", + "description": "Specifies the mode", + "order": 7 + }, + "path": { + "type": "string", + "title": "Path", + "description": "The path that describes the location of the machine group within the Patch Scan Templates list in the navigation pane", + "order": 8 + }, + "threadCount": { + "type": "integer", + "title": "Thread Count", + "description": "Specifies maximum number of machines that can be simultaneously scanned during one patch scan", + "order": 9 + } + } + }, "patch_filter": { "type": "object", "title": "patch_filter", @@ -136,38 +197,6 @@ class CreatePatchScanTemplateOutput(insightconnect_plugin_runtime.Output): "description": "Vendor and family product hierarchy", "order": 7 } - }, - "definitions": { - "patch_property_filter": { - "type": "object", - "title": "patch_property_filter", - "properties": { - "customActions": { - "type": "boolean", - "title": "Custom Actions", - "description": "Custom actions", - "order": 1 - }, - "nonSecurityPatchSeverities": { - "type": "string", - "title": "Non Security Patch Severities", - "description": "The non-security patch severities", - "order": 2 - }, - "securityPatchSeverities": { - "type": "string", - "title": "Security Patch Severities", - "description": "The security patch severities", - "order": 3 - }, - "securityTools": { - "type": "boolean", - "title": "Security Tools", - "description": "Security tools", - "order": 4 - } - } - } } }, "patch_property_filter": { @@ -199,181 +228,6 @@ class CreatePatchScanTemplateOutput(insightconnect_plugin_runtime.Output): "order": 4 } } - }, - "patch_scan_template": { - "type": "object", - "title": "patch_scan_template", - "properties": { - "creator": { - "type": "string", - "title": "Creator", - "description": "The name of the person who created the template", - "order": 1 - }, - "description": { - "type": "string", - "title": "Description", - "description": "Provides a description that explains the purpose of this patch scan template", - "order": 2 - }, - "id": { - "type": "string", - "title": "ID", - "description": "Specifies the ID of the patch scan template", - "order": 3 - }, - "isSystem": { - "type": "boolean", - "title": "Is System", - "description": "Indicates if this is a system template", - "order": 4 - }, - "links": { - "type": "object", - "title": "Links", - "description": "Shows the related URLs for each patch scan template and for the usedby list", - "order": 5 - }, - "name": { - "type": "string", - "title": "Name", - "description": "Specifies the patch scan template name", - "order": 6 - }, - "patchFilter": { - "$ref": "#/definitions/patch_filter", - "title": "Patch Filter", - "description": "Specifies the mode", - "order": 7 - }, - "path": { - "type": "string", - "title": "Path", - "description": "The path that describes the location of the machine group within the Patch Scan Templates list in the navigation pane", - "order": 8 - }, - "threadCount": { - "type": "integer", - "title": "Thread Count", - "description": "Specifies maximum number of machines that can be simultaneously scanned during one patch scan", - "order": 9 - } - }, - "definitions": { - "patch_filter": { - "type": "object", - "title": "patch_filter", - "properties": { - "patchFilePath": { - "type": "string", - "title": "Patch File Path", - "description": "The patch file path", - "order": 1 - }, - "patchGroupFilterType": { - "type": "string", - "title": "Patch Group Filter Type", - "description": "The patch's filter describes how this filter will be applied. The values can be Scan, Skip, or None", - "order": 2 - }, - "patchGroupIds": { - "type": "array", - "title": "Patch Group IDs", - "description": "The IDs of the patch groups to use", - "items": { - "type": "integer" - }, - "order": 3 - }, - "patchPropertyFilter": { - "$ref": "#/definitions/patch_property_filter", - "title": "Patch Property Filter", - "description": "Patch property filter (security, non-security, critical, etc.)", - "order": 4 - }, - "scanFor": { - "type": "string", - "title": "Scan For", - "description": "Gets or sets the type of patches to scan for", - "order": 5 - }, - "softwareDistribution": { - "type": "boolean", - "title": "Software Distribution", - "description": "Is software distribution included in the scan", - "order": 6 - }, - "vendorFamilyProductFilter": { - "type": "object", - "title": "Vendor Family Product Filter", - "description": "Vendor and family product hierarchy", - "order": 7 - } - }, - "definitions": { - "patch_property_filter": { - "type": "object", - "title": "patch_property_filter", - "properties": { - "customActions": { - "type": "boolean", - "title": "Custom Actions", - "description": "Custom actions", - "order": 1 - }, - "nonSecurityPatchSeverities": { - "type": "string", - "title": "Non Security Patch Severities", - "description": "The non-security patch severities", - "order": 2 - }, - "securityPatchSeverities": { - "type": "string", - "title": "Security Patch Severities", - "description": "The security patch severities", - "order": 3 - }, - "securityTools": { - "type": "boolean", - "title": "Security Tools", - "description": "Security tools", - "order": 4 - } - } - } - } - }, - "patch_property_filter": { - "type": "object", - "title": "patch_property_filter", - "properties": { - "customActions": { - "type": "boolean", - "title": "Custom Actions", - "description": "Custom actions", - "order": 1 - }, - "nonSecurityPatchSeverities": { - "type": "string", - "title": "Non Security Patch Severities", - "description": "The non-security patch severities", - "order": 2 - }, - "securityPatchSeverities": { - "type": "string", - "title": "Security Patch Severities", - "description": "The security patch severities", - "order": 3 - }, - "securityTools": { - "type": "boolean", - "title": "Security Tools", - "description": "Security tools", - "order": 4 - } - } - } - } } } } diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent/__init__.py index 6784e064af..f164ee73df 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import GetAgent diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent/schema.py index 9d92b3a978..c0147a44ef 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -9,14 +9,14 @@ class Component: class Input: ID = "id" - + class Output: AGENT = "agent" - + class GetAgentInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -30,7 +30,8 @@ class GetAgentInput(insightconnect_plugin_runtime.Input): }, "required": [ "id" - ] + ], + "definitions": {} } """) @@ -39,7 +40,7 @@ def __init__(self): class GetAgentOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -107,12 +108,6 @@ class GetAgentOutput(insightconnect_plugin_runtime.Output): "description": "The last known IP address of the agent machine", "order": 8 }, - "links": { - "type": "object", - "title": "Agent Links", - "description": "Shows the related URLs for the agent", - "order": 13 - }, "listeningPort": { "type": "integer", "title": "Listening Port", @@ -136,6 +131,12 @@ class GetAgentOutput(insightconnect_plugin_runtime.Output): "title": "Status", "description": "The current status of the agent", "order": 12 + }, + "links": { + "type": "object", + "title": "Agent Links", + "description": "Shows the related URLs for the agent", + "order": 13 } }, "required": [ diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent_status/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent_status/__init__.py index 8dd92906ca..84e8ce7781 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent_status/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent_status/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import GetAgentStatus diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent_status/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent_status/schema.py index dbaf23b7dc..a0f4e22d00 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent_status/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agent_status/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -9,14 +9,14 @@ class Component: class Input: ID = "id" - + class Output: AGENT_STATUS = "agent_status" - + class GetAgentStatusInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -30,7 +30,8 @@ class GetAgentStatusInput(insightconnect_plugin_runtime.Input): }, "required": [ "id" - ] + ], + "definitions": {} } """) @@ -39,7 +40,7 @@ def __init__(self): class GetAgentStatusOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -86,12 +87,6 @@ class GetAgentStatusOutput(insightconnect_plugin_runtime.Output): "description": "The date and time of the most recent check-in", "order": 4 }, - "links": { - "type": "object", - "title": "Agent Links", - "description": "Shows the related URLs for the agent", - "order": 9 - }, "machineName": { "type": "string", "title": "Machine Name", @@ -115,6 +110,12 @@ class GetAgentStatusOutput(insightconnect_plugin_runtime.Output): "title": "Running Policy Version", "description": "The agent's policy ID", "order": 8 + }, + "links": { + "type": "object", + "title": "Agent Links", + "description": "Shows the related URLs for the agent", + "order": 9 } }, "required": [ diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agents/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agents/__init__.py index e92dcde49b..890ce25843 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agents/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agents/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import GetAgents diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agents/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agents/schema.py index 48324dd33e..15cda4e310 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agents/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_agents/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -10,15 +10,15 @@ class Component: class Input: AGENT_CONFIGURATION_FILTER = "agent_configuration_filter" NAME_FILTER = "name_filter" - + class Output: AGENTS = "agents" COUNT = "count" - + class GetAgentsInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -41,7 +41,8 @@ class GetAgentsInput(insightconnect_plugin_runtime.Input): "description": "Filters agents where host or DNS name equals this value", "order": 2 } - } + }, + "definitions": {} } """) @@ -50,7 +51,7 @@ def __init__(self): class GetAgentsOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -124,12 +125,6 @@ class GetAgentsOutput(insightconnect_plugin_runtime.Output): "description": "The last known IP address of the agent machine", "order": 8 }, - "links": { - "type": "object", - "title": "Agent Links", - "description": "Shows the related URLs for the agent", - "order": 13 - }, "listeningPort": { "type": "integer", "title": "Listening Port", @@ -153,6 +148,12 @@ class GetAgentsOutput(insightconnect_plugin_runtime.Output): "title": "Status", "description": "The current status of the agent", "order": 12 + }, + "links": { + "type": "object", + "title": "Agent Links", + "description": "Shows the related URLs for the agent", + "order": 13 } }, "required": [ diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment/__init__.py index d827a75b21..49f4ae0b49 100644 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import GetPatchDeployment diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment/schema.py index 268c6c5f42..bbc7f8ea2b 100644 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -10,15 +10,15 @@ class Component: class Input: DEPLOYMENT_ID = "deployment_id" MACHINE_ID = "machine_id" - + class Output: MACHINE_INFORMATION = "machine_information" PATCH_DEPLOYMENT_DETAILS = "patch_deployment_details" - + class GetPatchDeploymentInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -38,7 +38,8 @@ class GetPatchDeploymentInput(insightconnect_plugin_runtime.Input): }, "required": [ "deployment_id" - ] + ], + "definitions": {} } """) @@ -47,7 +48,7 @@ def __init__(self): class GetPatchDeploymentOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -70,6 +71,69 @@ class GetPatchDeploymentOutput(insightconnect_plugin_runtime.Output): "patch_deployment_details" ], "definitions": { + "patch_deployment": { + "type": "object", + "title": "patch_deployment", + "properties": { + "completedMachineCount": { + "type": "integer", + "title": "Completed Machine Count", + "description": "Number of machines that has the deployment completed", + "order": 1 + }, + "creator": { + "type": "string", + "title": "Creator", + "description": "Initiator of the deployment", + "order": 2 + }, + "expectedMachineCount": { + "type": "integer", + "title": "Expected Machine Count", + "description": "Number of machines in this deployment", + "order": 3 + }, + "isComplete": { + "type": "boolean", + "title": "Completed", + "description": "Completion status of the deployment", + "order": 4 + }, + "lastUpdatedOn": { + "type": "string", + "title": "Last Updated On", + "description": "Date of receipt of the last status update", + "order": 5 + }, + "links": { + "type": "object", + "title": "Links", + "description": "Shows the related URLs for the deployment, the machines and the template", + "order": 6 + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the deployment template", + "order": 7 + }, + "startedOn": { + "type": "string", + "title": "Started On", + "description": "Deployment start date", + "order": 8 + }, + "id": { + "type": "string", + "title": "ID", + "description": "The unique operation identifier assigned to the patch deployment", + "order": 9 + } + }, + "required": [ + "id" + ] + }, "machine_deploy_state": { "type": "object", "title": "machine_deploy_state", @@ -150,69 +214,6 @@ class GetPatchDeploymentOutput(insightconnect_plugin_runtime.Output): "order": 12 } } - }, - "patch_deployment": { - "type": "object", - "title": "patch_deployment", - "properties": { - "completedMachineCount": { - "type": "integer", - "title": "Completed Machine Count", - "description": "Number of machines that has the deployment completed", - "order": 1 - }, - "creator": { - "type": "string", - "title": "Creator", - "description": "Initiator of the deployment", - "order": 2 - }, - "expectedMachineCount": { - "type": "integer", - "title": "Expected Machine Count", - "description": "Number of machines in this deployment", - "order": 3 - }, - "id": { - "type": "string", - "title": "ID", - "description": "The unique operation identifier assigned to the patch deployment", - "order": 9 - }, - "isComplete": { - "type": "boolean", - "title": "Completed", - "description": "Completion status of the deployment", - "order": 4 - }, - "lastUpdatedOn": { - "type": "string", - "title": "Last Updated On", - "description": "Date of receipt of the last status update", - "order": 5 - }, - "links": { - "type": "object", - "title": "Links", - "description": "Shows the related URLs for the deployment, the machines and the template", - "order": 6 - }, - "name": { - "type": "string", - "title": "Name", - "description": "Name of the deployment template", - "order": 7 - }, - "startedOn": { - "type": "string", - "title": "Started On", - "description": "Deployment start date", - "order": 8 - } - }, - "required": [ - "id" - ] } } } diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment_template_id/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment_template_id/__init__.py index 79bcfb34b3..4256fe11c1 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment_template_id/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment_template_id/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import GetPatchDeploymentTemplateId diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment_template_id/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment_template_id/schema.py index 919344f7f3..f641f792d2 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment_template_id/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_deployment_template_id/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -9,14 +9,14 @@ class Component: class Input: PATCH_DEPLOYMENT_TEMPLATE_NAME = "patch_deployment_template_name" - + class Output: PATCH_DEPLOYMENT_TEMPLATE_ID = "patch_deployment_template_id" - + class GetPatchDeploymentTemplateIdInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -30,7 +30,8 @@ class GetPatchDeploymentTemplateIdInput(insightconnect_plugin_runtime.Input): }, "required": [ "patch_deployment_template_name" - ] + ], + "definitions": {} } """) @@ -39,7 +40,7 @@ def __init__(self): class GetPatchDeploymentTemplateIdOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -53,7 +54,8 @@ class GetPatchDeploymentTemplateIdOutput(insightconnect_plugin_runtime.Output): }, "required": [ "patch_deployment_template_id" - ] + ], + "definitions": {} } """) diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_details/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_details/__init__.py index 99b98c564a..ebc65b1551 100644 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_details/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_details/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import GetPatchDetails diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_details/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_details/schema.py index 054f634178..2a37d8b8ea 100644 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_details/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_details/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -9,14 +9,14 @@ class Component: class Input: ID = "id" - + class Output: PATCH = "patch" - + class GetPatchDetailsInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -30,7 +30,8 @@ class GetPatchDetailsInput(insightconnect_plugin_runtime.Input): }, "required": [ "id" - ] + ], + "definitions": {} } """) @@ -39,7 +40,7 @@ def __init__(self): class GetPatchDetailsOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -55,44 +56,6 @@ class GetPatchDetailsOutput(insightconnect_plugin_runtime.Output): "patch" ], "definitions": { - "links_self": { - "type": "object", - "title": "links_self", - "properties": { - "self": { - "$ref": "#/definitions/next", - "title": "Self", - "description": "Self", - "order": 1 - } - }, - "definitions": { - "next": { - "type": "object", - "title": "next", - "properties": { - "href": { - "type": "string", - "title": "HREF", - "description": "Href", - "order": 1 - } - } - } - } - }, - "next": { - "type": "object", - "title": "next", - "properties": { - "href": { - "type": "string", - "title": "HREF", - "description": "Href", - "order": 1 - } - } - }, "vulnerability": { "type": "object", "title": "vulnerability", @@ -166,45 +129,29 @@ class GetPatchDetailsOutput(insightconnect_plugin_runtime.Output): }, "order": 10 } - }, - "definitions": { - "links_self": { - "type": "object", - "title": "links_self", - "properties": { - "self": { - "$ref": "#/definitions/next", - "title": "Self", - "description": "Self", - "order": 1 - } - }, - "definitions": { - "next": { - "type": "object", - "title": "next", - "properties": { - "href": { - "type": "string", - "title": "HREF", - "description": "Href", - "order": 1 - } - } - } - } - }, - "next": { - "type": "object", - "title": "next", - "properties": { - "href": { - "type": "string", - "title": "HREF", - "description": "Href", - "order": 1 - } - } + } + }, + "links_self": { + "type": "object", + "title": "links_self", + "properties": { + "self": { + "$ref": "#/definitions/next", + "title": "Self", + "description": "Self", + "order": 1 + } + } + }, + "next": { + "type": "object", + "title": "next", + "properties": { + "href": { + "type": "string", + "title": "HREF", + "description": "Href", + "order": 1 } } } diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_scan_status/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_scan_status/__init__.py index 155fdabccc..8a35f7ca7e 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_scan_status/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_scan_status/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import GetPatchScanStatus diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_scan_status/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_scan_status/schema.py index b29c39e1a2..6698eb8a46 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_scan_status/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_patch_scan_status/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -9,14 +9,14 @@ class Component: class Input: SCAN_ID = "scan_id" - + class Output: PATCH_SCAN_STATUS_DETAILS = "patch_scan_status_details" - + class GetPatchScanStatusInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -30,7 +30,8 @@ class GetPatchScanStatusInput(insightconnect_plugin_runtime.Input): }, "required": [ "scan_id" - ] + ], + "definitions": {} } """) @@ -39,7 +40,7 @@ def __init__(self): class GetPatchScanStatusOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_scanned_machine_details/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_scanned_machine_details/__init__.py index 85d2afdbc3..6a26f1a218 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_scanned_machine_details/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_scanned_machine_details/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import GetScannedMachineDetails diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_scanned_machine_details/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_scanned_machine_details/schema.py index 6d0d337182..5ad5187b03 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_scanned_machine_details/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/get_scanned_machine_details/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -10,15 +10,15 @@ class Component: class Input: HOSTNAME = "hostname" SCAN_ID = "scan_id" - + class Output: DETECTED_PATCHES = "detected_patches" PATCH_SCAN_MACHINE = "patch_scan_machine" - + class GetScannedMachineDetailsInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -39,7 +39,8 @@ class GetScannedMachineDetailsInput(insightconnect_plugin_runtime.Input): "required": [ "hostname", "scan_id" - ] + ], + "definitions": {} } """) @@ -48,7 +49,7 @@ def __init__(self): class GetScannedMachineDetailsOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -74,6 +75,84 @@ class GetScannedMachineDetailsOutput(insightconnect_plugin_runtime.Output): "patch_scan_machine" ], "definitions": { + "patch_scan_machine": { + "type": "object", + "title": "patch_scan_machine", + "properties": { + "completedOn": { + "type": "string", + "title": "Completed On", + "description": "The date and time that the machine assessment was completed", + "order": 1 + }, + "domain": { + "type": "string", + "title": "Domain", + "description": "The domain short-name of the assessed machine", + "order": 2 + }, + "errorDescription": { + "type": "string", + "title": "Error Description", + "description": "Description of the patch scan or resolution error", + "order": 3 + }, + "errorNumber": { + "type": "integer", + "title": "Error Number", + "description": "An error code representing a resolution or assessment failure", + "order": 4 + }, + "id": { + "type": "integer", + "title": "ID", + "description": "The unique identifier of the machine patch assessment", + "order": 5 + }, + "installedPatchCount": { + "type": "integer", + "title": "Installed Patch Count", + "description": "The total number of installed patches found in the assessment", + "order": 6 + }, + "links": { + "type": "object", + "title": "Links", + "description": "Shows the related URLs", + "order": 7 + }, + "missingPatchCount": { + "type": "integer", + "title": "Missing Patch Count", + "description": "The total number of missing patches detected in the assessment", + "order": 8 + }, + "missingServicePackCount": { + "type": "integer", + "title": "Missing Service Pack Count", + "description": "The total number of missing service packs detected in the assessment", + "order": 9 + }, + "name": { + "type": "string", + "title": "Host Name", + "description": "The resolved short-name or host name of the machine", + "order": 10 + }, + "virtualMachinePath": { + "type": "string", + "title": "Virtual Machine Path", + "description": "The virtual machine path if this is a hosted VM", + "order": 11 + }, + "virtualServer": { + "type": "string", + "title": "Virtual Server", + "description": "The virtual machine server name if this is a hosted VM", + "order": 12 + } + } + }, "detected_patch": { "type": "object", "title": "detected_patch", @@ -102,23 +181,17 @@ class GetScannedMachineDetailsOutput(insightconnect_plugin_runtime.Output): "description": "Shows the related URLs", "order": 4 }, - "patchId": { - "type": "string", - "title": "Patch ID", - "description": "Patch ID", - "order": 6 - }, "patchType": { "type": "string", "title": "Patch Type", "description": "Patch Type", "order": 5 }, - "productId": { + "patchId": { "type": "string", - "title": "Product ID", - "description": "Product ID", - "order": 8 + "title": "Patch ID", + "description": "Patch ID", + "order": 6 }, "productName": { "type": "string", @@ -126,6 +199,12 @@ class GetScannedMachineDetailsOutput(insightconnect_plugin_runtime.Output): "description": "Product name", "order": 7 }, + "productId": { + "type": "string", + "title": "Product ID", + "description": "Product ID", + "order": 8 + }, "scanItemId": { "type": "integer", "title": "Scan Item ID", @@ -164,84 +243,6 @@ class GetScannedMachineDetailsOutput(insightconnect_plugin_runtime.Output): "servicePackName", "vendorSeverity" ] - }, - "patch_scan_machine": { - "type": "object", - "title": "patch_scan_machine", - "properties": { - "completedOn": { - "type": "string", - "title": "Completed On", - "description": "The date and time that the machine assessment was completed", - "order": 1 - }, - "domain": { - "type": "string", - "title": "Domain", - "description": "The domain short-name of the assessed machine", - "order": 2 - }, - "errorDescription": { - "type": "string", - "title": "Error Description", - "description": "Description of the patch scan or resolution error", - "order": 3 - }, - "errorNumber": { - "type": "integer", - "title": "Error Number", - "description": "An error code representing a resolution or assessment failure", - "order": 4 - }, - "id": { - "type": "integer", - "title": "ID", - "description": "The unique identifier of the machine patch assessment", - "order": 5 - }, - "installedPatchCount": { - "type": "integer", - "title": "Installed Patch Count", - "description": "The total number of installed patches found in the assessment", - "order": 6 - }, - "links": { - "type": "object", - "title": "Links", - "description": "Shows the related URLs", - "order": 7 - }, - "missingPatchCount": { - "type": "integer", - "title": "Missing Patch Count", - "description": "The total number of missing patches detected in the assessment", - "order": 8 - }, - "missingServicePackCount": { - "type": "integer", - "title": "Missing Service Pack Count", - "description": "The total number of missing service packs detected in the assessment", - "order": 9 - }, - "name": { - "type": "string", - "title": "Host Name", - "description": "The resolved short-name or host name of the machine", - "order": 10 - }, - "virtualMachinePath": { - "type": "string", - "title": "Virtual Machine Path", - "description": "The virtual machine path if this is a hosted VM", - "order": 11 - }, - "virtualServer": { - "type": "string", - "title": "Virtual Server", - "description": "The virtual machine server name if this is a hosted VM", - "order": 12 - } - } } } } diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/search_patches/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/search_patches/__init__.py index 3b9c34b642..6e4fe6f4df 100644 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/search_patches/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/search_patches/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import SearchPatches diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/search_patches/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/search_patches/schema.py index bca8f81883..d75225581d 100644 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/search_patches/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/search_patches/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -9,14 +9,14 @@ class Component: class Input: SECURITY_ID = "security_id" - + class Output: VULNERABILITIES = "vulnerabilities" - + class SearchPatchesInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -33,7 +33,8 @@ class SearchPatchesInput(insightconnect_plugin_runtime.Input): }, "required": [ "security_id" - ] + ], + "definitions": {} } """) @@ -42,7 +43,7 @@ def __init__(self): class SearchPatchesOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -61,44 +62,6 @@ class SearchPatchesOutput(insightconnect_plugin_runtime.Output): "vulnerabilities" ], "definitions": { - "links_self": { - "type": "object", - "title": "links_self", - "properties": { - "self": { - "$ref": "#/definitions/next", - "title": "Self", - "description": "Self", - "order": 1 - } - }, - "definitions": { - "next": { - "type": "object", - "title": "next", - "properties": { - "href": { - "type": "string", - "title": "HREF", - "description": "Href", - "order": 1 - } - } - } - } - }, - "next": { - "type": "object", - "title": "next", - "properties": { - "href": { - "type": "string", - "title": "HREF", - "description": "Href", - "order": 1 - } - } - }, "vulnerability": { "type": "object", "title": "vulnerability", @@ -172,45 +135,29 @@ class SearchPatchesOutput(insightconnect_plugin_runtime.Output): }, "order": 10 } - }, - "definitions": { - "links_self": { - "type": "object", - "title": "links_self", - "properties": { - "self": { - "$ref": "#/definitions/next", - "title": "Self", - "description": "Self", - "order": 1 - } - }, - "definitions": { - "next": { - "type": "object", - "title": "next", - "properties": { - "href": { - "type": "string", - "title": "HREF", - "description": "Href", - "order": 1 - } - } - } - } - }, - "next": { - "type": "object", - "title": "next", - "properties": { - "href": { - "type": "string", - "title": "HREF", - "description": "Href", - "order": 1 - } - } + } + }, + "links_self": { + "type": "object", + "title": "links_self", + "properties": { + "self": { + "$ref": "#/definitions/next", + "title": "Self", + "description": "Self", + "order": 1 + } + } + }, + "next": { + "type": "object", + "title": "next", + "properties": { + "href": { + "type": "string", + "title": "HREF", + "description": "Href", + "order": 1 } } } diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_deployment/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_deployment/__init__.py index f9c7ff1904..9033a6de6a 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_deployment/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_deployment/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import StartPatchDeployment diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_deployment/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_deployment/schema.py index c84ddd2bbb..5cb2cb2be4 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_deployment/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_deployment/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -11,14 +11,14 @@ class Input: DOWNLOAD_PATCHES = "download_patches" SCAN_IDENTIFIER = "scan_identifier" TEMPLATE_IDENTIFIER = "template_identifier" - + class Output: SUCCESS = "success" - + class StartPatchDeploymentInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -46,7 +46,8 @@ class StartPatchDeploymentInput(insightconnect_plugin_runtime.Input): "download_patches", "scan_identifier", "template_identifier" - ] + ], + "definitions": {} } """) @@ -55,7 +56,7 @@ def __init__(self): class StartPatchDeploymentOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -69,7 +70,8 @@ class StartPatchDeploymentOutput(insightconnect_plugin_runtime.Output): }, "required": [ "success" - ] + ], + "definitions": {} } """) diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_scan/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_scan/__init__.py index 1db9d1287e..1f726dbba7 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_scan/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_scan/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import StartPatchScan diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_scan/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_scan/schema.py index 85eaf9e2c9..85d6ae07bd 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_scan/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/start_patch_scan/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -17,14 +17,14 @@ class Input: RUN_AS_CREDENTIAL_ID = "run_as_credential_id" TEMPLATE_ID = "template_id" USE_MACHINE_CREDENTIAL = "use_machine_credential" - + class Output: SCAN_DETAILS = "scan_details" - + class StartPatchScanInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -94,7 +94,8 @@ class StartPatchScanInput(insightconnect_plugin_runtime.Input): "required": [ "max_poll_time", "template_id" - ] + ], + "definitions": {} } """) @@ -103,7 +104,7 @@ def __init__(self): class StartPatchScanOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/update_patch_group/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/update_patch_group/__init__.py index 11bca7c317..f00a7c7582 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/update_patch_group/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/update_patch_group/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .action import UpdatePatchGroup diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/update_patch_group/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/update_patch_group/schema.py index 541cffd315..14c28ee2ad 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/update_patch_group/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/actions/update_patch_group/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -10,14 +10,14 @@ class Component: class Input: PATCH_GROUP = "patch_group" VULNERABILITY_IDENTIFIER = "vulnerability_identifier" - + class Output: SUCCESS = "success" - + class UpdatePatchGroupInput(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -41,7 +41,8 @@ class UpdatePatchGroupInput(insightconnect_plugin_runtime.Input): "required": [ "patch_group", "vulnerability_identifier" - ] + ], + "definitions": {} } """) @@ -50,7 +51,7 @@ def __init__(self): class UpdatePatchGroupOutput(insightconnect_plugin_runtime.Output): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -64,7 +65,8 @@ class UpdatePatchGroupOutput(insightconnect_plugin_runtime.Output): }, "required": [ "success" - ] + ], + "definitions": {} } """) diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/connection/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/connection/__init__.py index a515dcf6b0..c78d3356be 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/connection/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/connection/__init__.py @@ -1,2 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from .connection import Connection diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/connection/schema.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/connection/schema.py index ab5d105b56..01c0c9858d 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/connection/schema.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/connection/schema.py @@ -1,4 +1,4 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT import insightconnect_plugin_runtime import json @@ -8,10 +8,10 @@ class Input: HOST = "host" PORT = "port" SSL_VERIFY = "ssl_verify" - + class ConnectionSchema(insightconnect_plugin_runtime.Input): - schema = json.loads(""" + schema = json.loads(r""" { "type": "object", "title": "Variables", @@ -52,23 +52,23 @@ class ConnectionSchema(insightconnect_plugin_runtime.Input): "definitions": { "credential_username_password": { "id": "credential_username_password", - "type": "object", "title": "Credential: Username and Password", "description": "A username and password combination", + "type": "object", "properties": { + "username": { + "type": "string", + "title": "Username", + "description": "The username to log in with", + "order": 1 + }, "password": { "type": "string", "title": "Password", - "displayType": "password", "description": "The password", "format": "password", + "displayType": "password", "order": 2 - }, - "username": { - "type": "string", - "title": "Username", - "description": "The username to log in with", - "order": 1 } }, "required": [ diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/tasks/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/tasks/__init__.py new file mode 100644 index 0000000000..7020c9a4ad --- /dev/null +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/tasks/__init__.py @@ -0,0 +1,2 @@ +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT + diff --git a/plugins/ivanti_security_controls/icon_ivanti_security_controls/triggers/__init__.py b/plugins/ivanti_security_controls/icon_ivanti_security_controls/triggers/__init__.py index bace8db897..7020c9a4ad 100755 --- a/plugins/ivanti_security_controls/icon_ivanti_security_controls/triggers/__init__.py +++ b/plugins/ivanti_security_controls/icon_ivanti_security_controls/triggers/__init__.py @@ -1 +1,2 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT + diff --git a/plugins/ivanti_security_controls/plugin.spec.yaml b/plugins/ivanti_security_controls/plugin.spec.yaml index 6c81b3246b..07c261c717 100644 --- a/plugins/ivanti_security_controls/plugin.spec.yaml +++ b/plugins/ivanti_security_controls/plugin.spec.yaml @@ -4,11 +4,29 @@ products: [insightconnect] name: ivanti_security_controls title: Ivanti Security Controls description: Ivanti Security Controls is a unified IT management platform used for managing and protecting through Patch Management, Application Control, and Asset Inventory functionality -version: 1.5.0 +version: 1.5.1 +connection_version: 1 vendor: rapid7 support: rapid7 status: [] tags: [TEM, endpoint, patch] +supported_versions: ["2024-11-1"] +sdk: + type: slim + version: 6.1.4 + user: nobody +key_features: + - "Ability to retrieve Ivanti Security Controls known agents" + - "Ability to check agent status" +requirements: + - "Ivanti Security Controls 2019.3 (Build: 9.4.34544) or later" + - "Ivanti Security Controls host and API port (default: 3121)" + - "Username and password of Windows account where Ivanti Security Controls is installed" + - "(Recommended) Ivanti Security Controls certificate in order to enforce certificate verification" +links: + - "[Ivanti Security Controls](https://www.ivanti.com/products/security-controls)" +references: + - "[Ivanti Security Controls API Documentation](https://help.ivanti.com/iv/help/en_US/isec/API/Topics/Welcome.htm)" hub_tags: use_cases: [application_management, threat_detection_and_response, asset_inventory, remediation_management] keywords: [TEM, endpoint, patch] @@ -18,7 +36,16 @@ resources: license_url: https://github.com/rapid7/insightconnect-plugins/blob/master/LICENSE vendor_url: https://www.ivanti.com/ enable_cache: false - +version_history: + - "1.5.1 - Bumping requirements.txt | SDK bump to 6.1.4" + - "1.5.0 - New action Update Patch Group" + - "1.4.0 - New actions Get Patch Deployment Template ID, Start Patch Deployment" + - "1.3.0 - New actions Create Patch Group and Add CVEs, Create Patch Scan Template" + - "1.2.1 - Added session credentials and changed polling method for Start Patch Scan" + - "1.2.0 - New actions Get Patch Deployment, Get Patch Details and Search Patches" + - "1.1.0 - Add actions Start Patch Scan, Get Patch Scan Status and Get Scanned Machine Details" + - "1.0.1 - Fix issue where Get Agents action does not include filters during paging" + - "1.0.0 - Initial plugin" connection: host: title: Host @@ -733,6 +760,7 @@ actions: description: Number of agents returned type: integer required: false + example: 1 agents: title: Agents description: List of agent details @@ -937,6 +965,7 @@ actions: description: The ID of the patch deployment template type: string required: true + example: 01234567-89AB-CDEF-0123-456789ABCDEF start_patch_deployment: title: Start Patch Deployment description: Start patch deployment @@ -965,6 +994,7 @@ actions: description: Was operation successful type: boolean required: true + example: true create_patch_scan_template: title: Create Patch Scan Template description: Create a new patch scan template @@ -1055,3 +1085,4 @@ actions: description: Was operation successful type: boolean required: true + example: true diff --git a/plugins/ivanti_security_controls/requirements.txt b/plugins/ivanti_security_controls/requirements.txt index fcce4af84f..1c17d72694 100755 --- a/plugins/ivanti_security_controls/requirements.txt +++ b/plugins/ivanti_security_controls/requirements.txt @@ -3,4 +3,4 @@ # See: https://pip.pypa.io/en/stable/user_guide/#requirements-files requests_ntlm==1.1.0 polling2==0.4.5 -validators==0.15.0 \ No newline at end of file +validators==0.34.0 diff --git a/plugins/ivanti_security_controls/setup.py b/plugins/ivanti_security_controls/setup.py index c5811c4d1f..c4fda0ba55 100755 --- a/plugins/ivanti_security_controls/setup.py +++ b/plugins/ivanti_security_controls/setup.py @@ -1,9 +1,9 @@ -# GENERATED BY KOMAND SDK - DO NOT EDIT +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT from setuptools import setup, find_packages setup(name="ivanti_security_controls-rapid7-plugin", - version="1.5.0", + version="1.5.1", description="Ivanti Security Controls is a unified IT management platform used for managing and protecting through Patch Management, Application Control, and Asset Inventory functionality", author="rapid7", author_email="", diff --git a/plugins/ivanti_security_controls/unit_test/__init__.py b/plugins/ivanti_security_controls/unit_test/__init__.py new file mode 100644 index 0000000000..d9ae09fc16 --- /dev/null +++ b/plugins/ivanti_security_controls/unit_test/__init__.py @@ -0,0 +1,4 @@ +# GENERATED BY INSIGHT-PLUGIN - DO NOT EDIT +import sys + +sys.path.append("../") \ No newline at end of file