Repository: CrowdStrike/falconpy (language: python)

Issue:
[ DOC ] ML exclusion creation targeting all host groups (applied_gobally=True) needs ["all"] as fake group id
**Documentation page topic**

* https://www.falconpy.io/Service-Collections/Ml-Exclusions.html#createmlexclusionsv1

**Describe the error or typo**

`/policy/entities/ml-exclusions/v1` says `{'code': 400, 'message': "groups: The 'groups' field must not be empty."}` when no group are passed.

By taking a peek at what happens in the web UI, I figured out that you need to send groups=["all"] so that the API sets `applied_globally=True`, and sets `groups=[]` under the hood.

Please document that behavior. I managed to use the API to create ML exclusions targeting all hosts by passing `groups=["all"]`.

```python
# Here, 'exclusion' is a dict equivalent to the blob sent back by the API when querying it.
group_list = exclusion['groups']
excluded_from = exclusion['excluded_from']
value = exclusion['value']
BODY = {
    "comment": "string",
    "excluded_from": excluded_from,
    "value": value,
}   
        
# "message": "groups: The 'groups' field must not be empty."
if len(group_list) == 0:
    # Found in the web UI lol
    BODY['groups'] = ['all']
else:   
    BODY['groups'] = group_list

self.logger.info(f'Creating ML Exclusion for {value} on groups {group_list}, excluded from {excluded_from}')
r = self.exec('createMLExclusionsV1',body = BODY)
if r['status_code'] != 201:
    raise Exception()
```

**Documentation repository:**
 - [ ] GitHub Wiki
 - [x] falconpy.io
 - [ ] Source code - docstring

**Additional context**
Add any other context about the problem here.



Discussion / hints:

Fix patch:
diff --git a/.github/wordlist.txt b/.github/wordlist.txt
index 2d2a8d41..e2b63887 100644
--- a/.github/wordlist.txt
+++ b/.github/wordlist.txt
@@ -1391,4 +1391,57 @@ Esha
 Kumar
 gansel
 Ansel
-zipp
\ No newline at end of file
+zipp
+aaf
+ExecuteCommandProxy
+ASPM
+UpsertBusinessApplications
+GetExecutorNodes
+UpdateExecutorNode
+CreateExecutorNode
+DeleteExecutorNode
+GetIntegrationTasks
+CreateIntegrationTask
+UpdateIntegrationTask
+DeleteIntegrationTask
+RunIntegrationTask
+GetIntegrationTypes
+GetIntegrations
+CreateIntegration
+UpdateIntegration
+DeleteIntegration
+ExecuteQuery
+ServiceNowGetDeployments
+ServiceNowGetServices
+GetServicesCount
+GetServiceViolationTypes
+GetTags
+UpsertTags
+DeleteTags
+GetCredentialsIAC
+CombinedBaseImages
+CreateBaseImageEntities
+DeleteBaseImages
+ListObjectsByVersion
+SearchObjectsByVersion
+GetVersionedObject
+PutObjectByVersion
+DeleteVersionedObject
+GetVersionedObjectMetadata
+DataScanner
+DeliverySettings
+GetDeliverySettings
+PostDeliverySettings
+DownloadFile
+EnumerateFile
+IngestData
+resultset
+ReadNamespacesByDateRangeCount
+ReadNamespaceCount
+Mixin
+UploadFileMixin
+GetScanResult
+LaunchScan
+DeleteScanResult
+QueryScanResults
+GetSensorUsageWeekly
diff --git a/.pylintrc b/.pylintrc
index b7adee2c..7ddbd827 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -347,6 +347,8 @@ single-line-class-stmt=no
 # else.
 single-line-if-stmt=no
 
+# Number of positional arguments to a method
+max-positional-arguments=20
 
 [IMPORTS]
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c084ce2d..1a7cc97e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,268 @@
+# Version 1.4.6
+## Added features and functionality
++ Added: Added _ExecuteCommandProxy_ operation to the __API Integrations__ service collection.
+    - `_endpoint/_api_integrations.py`
+    - `_payload/_api_integrations.py`
+    - `api_integrations.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_api_integrations.py`
+
++ Added: Added new __ASPM__ service collection with 23 operations.
+    - _UpsertBusinessApplications_
+    - _GetExecutorNodes_
+    - _UpdateExecutorNode_
+    - _CreateExecutorNode_
+    - _DeleteExecutorNode_
+    - _GetIntegrationTasks_
+    - _CreateIntegrationTask_
+    - _UpdateIntegrationTask_
+    - _DeleteIntegrationTask_
+    - _RunIntegrationTask_
+    - _GetIntegrationTypes_
+    - _GetIntegrations_
+    - _CreateIntegration_
+    - _UpdateIntegration_
+    - _DeleteIntegration_
+    - _ExecuteQuery_
+    - _ServiceNowGetDeployments_
+    - _ServiceNowGetServices_
+    - _GetServicesCount_
+    - _GetServiceViolationTypes_
+    - _GetTags_
+    - _UpsertTags_
+    - _DeleteTags_
+    - `_endpoint/__init__.py`
+    - `_endpoint/_aspm.py`
+    - `_payload/__init__.py`
+    - `_payload/_aspm.py`
+    - `_util/_functions.py`
+    - `_util/_uber.py`
+    - `__init__.py`
+    - `aspm.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_aspm.py`
+
++ Added: Added 1 new operation (_GetCredentialsIAC_) to the __Cloud Snapshots__ service collection.
+    - `_endpoint/_cloud_snapshots.py`
+    - `cloud_snapshots.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_cloud_snapshots.py`
+
++ Added: Added new operations, parameters and parameter options to the __Container Images__ service collection.
+    - Added new _CombinedBaseImages_ operation.
+    - Added new _CreateBaseImageEntities_ operation.
+    - Added new _DeleteBaseImages_ operation.
+    - Added `include_base_image_vuln` as a filter option to the _AggregateImageCount_ operation.
+    - Added `source` as a sort option to the _GetCombinedImages_ operation.
+    - Added `include_base_image_vuln` as a filter option to the _ReadCombinedImagesExport_ operation.
+    - Added `source` as a sort option to the _ReadCombinedImagesExport_ operation.
+    - Added `include_base_image_vuln` parameter to the _CombinedImageIssuesSummary_ operation.
+    - Added `include_base_image_vuln` parameter to the _CombinedImageVulnerabilitySummary_ operation.
+    - `_endpoint/_container_images.py`
+    - `_payload/__init__.py`
+    - `_payload/_container.py`
+    - `container_images.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_container_images.py`
+
++ Added: Added parameters to multiple operations within the __CSPM Registration__ service collection.
+    - Added `template` parameter to the _GetCSPMAwsConsoleSetupURLs_ operation.
+    - Added `account_type`, `dspm_enabled`, `dspm_regions`, and `dspm_role` parameters to the _GetCSPMAwsAccountScriptsAttachment_ operation.
+    - `_endpoint/_cspm_registration.py`
+    - `cspm_registration.py`
+
++ Added: Added six new operations to the __Custom Storage__ service collection.
+    - _ListObjectsByVersion_
+    - _SearchObjectsByVersion_
+    - _GetVersionedObject_
+    - _PutObjectByVersion_
+    - _DeleteVersionedObject_
+    - _GetVersionedObjectMetadata_
+    - `_endpoint/_custom_storage.py`
+    - `_util/_functions.py`
+    - `_util/_uber.py`
+    - `custom_storage.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_custom_storage.py`
+
++ Added: Added `dspm_enabled`, `dspm_regions`, and `dspm_role` to the _GetD4CAWSAccountScriptsAttachment_ operation within the __D4C Registration__ service collection.
+    - `_endpoint/_d4c_registration.py`
+    - `d4c_registration.py`
+
++ Updated: Added new filter options to all operations within the __Compliance Assessment__ service collection.
+    - `_endpoint/__init__.py`
+    - `_endpoint/_compliance_assessments.py`
+    - `compliance_assessments.py`
+
++ Added: Added `include_base_image_vuln` as an allowed filter option to multiple operations within the __Container Vulnerabilities__ service collection.
+    - `_endpoint/_container_vulnerabilities.py`
+    - `container_vulnerabilities.py`
+
++ Added: Added new __DataScanner__ service collection with 4 new operations.
+    - _get_image_registry_credentials_
+    - _get_data_scanner_tasks_
+    - _update_data_scanner_tasks_
+    - _handle_
+    - `_endpoint/__init__.py`
+    - `_endpoint/_datascanner.py`
+    - `_endpoint/deprecated/__init__.py`
+    - `_endpoint/deprecated/_datascanner.py`
+    - `__init__.py`
+    - `datascanner.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_datascanner.py`
+
++ Added: Added new __DeliverySettings__ service collection with 2 new operations.
+    - _GetDeliverySettings_
+    - _PostDeliverySettings_
+    - `_endpoint/__init__.py`
+    - `_endpoint/_delivery_settings.py`
+    - `_payload/__init__.py`
+    - `_payload/_delivery_settings.py`
+    - `__init__.py`
+    - `delivery_settings.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_delivery_settings.py`
+
++ Added: Added _combined_applications_ and _combined_hosts_ operations to the __Discover__ service collection.
+    - `_endpoint/_discover.py`
+    - `_endpoint/deprecated/_discover.py`
+    - `discover.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_discover.py`
+
++ Added: Added new _ReadDriftIndicatorEntities_ operation to the __Drift Indicators__ service collection.
+    - `_endpoint/_drift_indicators.py`
+    - `drift_indicators.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_drift_indicators.py`
+
++ Added: Added new __Downloads__ service collection with 2 new operations.
+    - _DownloadFile_
+    - _EnumerateFile_
+    - `_endpoint/__init__.py`
+    - `_endpoint/_downloads.py`
+    - `__init__.py`
+    - `downloads.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_downloads.py`
+
++ Added: Added new _delete_external_assets_ operation to the __Exposure Management__ service collection.
+    - `_endpoint/_exposure_management.py`
+    - `_endpoint/deprecated/_exposure_management.py`
+    - `exposure_management.py`
+
++ Added: Added `aid` parameter and two new values for `environment_id` to the _Submit_ operation within the __Falcon Intelligence Sandbox__ service collection.
+    - `_endpoint/_falconx_sandbox.py`
+    - `falconx_sandbox.py`
+
++ Added: Added `data_content` parameter to _IngestDataAsyncV1_ and _IngestData_ operations and added `job_status_only` parameter to the _GetSavedSearchesExecuteV1_ operation within the __Foundry LogScale__ service collection.
+    - `_endpoint/_foundry_logscale.py`
+    - `foundry_logscale.py`
+
++ Updated: Increased resultset max return for the _QueryDevicesByFilterScroll_ operation to align with new API maximums. (__Hosts__ Service Class)
+    - `_endpoint/_hosts.py`
+    - `hosts.py`
+
++ Added: Added 4 new operations to the __Identity Protection__ service collection. Deprecated `api_preempt_proxy_` prefix from all operation IDs.
+    - _get_policy_rules_
+    - _post_policy_rules_
+    - _delete_policy_rules_
+    - _get_policy_rules_query_
+    - `_endpoint/_identity_protection.py`
+    - `_endpoint/deprecated/_identity_protection.py`
+    - `_payload/__init__.py`
+    - `_payload/_identity_protection.py`
+    - `identity_protection.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_identity_protection.py`
+
++ Added: Added `cl_regex` and `ifn_regex` parameters to the _queryIOAExclusionsV1_ operation within the __IOA Exclusions__ service collection.
+    - `_endpoint/_ioa_exclusions.py`
+    - `ioa_exclusions.py`
+
++ Added: Added 5 new operations to the __Kubernetes Protection__ service collection.
+    - _ReadContainerEnrichment_
+    - _ReadPodEnrichment_
+    - _ReadDeploymentEnrichment_
+    - _ReadNamespacesByDateRangeCount_
+    - _ReadNamespaceCount_
+    - `_endpoint/_kubernetes_protection.py`
+    - `kubernetes_protection.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_kubernetes_protection.py`
+
++ Added: Added new __QuickScan Pro__ service collection with 6 new operations.
+    - _UploadFileMixin0Mixin94_
+    - _DeleteFile_
+    - _GetScanResult_
+    - _LaunchScan_
+    - _DeleteScanResult_
+    - _QueryScanResults_
+    - `__init__.py`
+    - `_endpoint/__init__.py`
+    - `_endpoint/_quick_scan_pro.py`
+    - `quick_scan_pro.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_quick_scan_pro.py`
+
++ Added: Added `secondary_sort` (Also accepted: `secondarySort`) parameter to the _QueryRulesV1_ operation within the __Recon__ service collection.
+    - `_endpoint/_recon.py`
+    - `_recon.py`
+
++ Added: Added new __Sensor Usage__ service collection with one operation (_GetSensorUsageWeekly_).
+    - `_endpoint/__init__.py`
+    - `_endpoint/_sensor_usage.py`
+    - `__init__.py`
+    - `sensor_usage.py`
+    > Unit testing expanded to complete code coverage.
+    - `tests/test_sensor_usage.py`
+
++ Added: Added `is_descendent_process` parameter to the _updateSensorVisibilityExclusionsV1_ operation within the __Sensor Visibility Exclusions__ service collection.
+    - `_payload/_generic.py`
+    - `sensor_visibility_exclusions.py`
+
++ Added: Added additional vertices types as possible values to the `combined_summary_get`, `entities_vertices_get`, and `entities_vertices_getv2` operations within the __ThreatGraph__ service collection.
+    - `_endpoint/_threatgraph.py`
+    - `_util/_functions.py`
+    - `threatgraph.py`
+
+## Issues resolved
++ Fixed: Resolve issue causing headers to not be passed to the _PutObject_ operation within the __Custom Storage__ service collection.
+    - `custom_storage.py`
+
++ Updated: Fixed typing syntax on `update_device_tags` method. (__Hosts__ Service Class) 
+    - `hosts.py`
+
++ Fixed: Added "all" as the default for the `groups` parameter if it is not present when calling the _createMLExclusionsV1_ operation. Closes #1233.
+    - `ml_exclusions.py`
+    - Thanks go out to @59e5aaf4 for identifying and reporting this issue! 🙇
+
+## Other
++ Added: Added US-GOV-2 region to CrowdStrike container region (Container Base URL) enumerator.
+    - `_enum/_container_base_url.py`
+    - Thanks go out to @redhatrises for contributing this update! 🙇
+
++ Deprecated: Moved the _GetQueriesAlertsV1_, _PostEntitiesAlertsV1_, _PatchEntitiesAlertsV2_, and _PostAggregatesAlertsV1_ operations within the __Alerts__ service collection to a deprecated status.
+    - `_endpoint/_alerts.py`
+    - `alerts.py`
+
++ Updated: Cosmetic updates to multiple operation descriptions within the __Custom IOA__ service collection.
+    - `_endpoint/_custom_ioa.py`
+    - `_endpoint/deprecated/_custom_ioa.py`
+
++ Updated: Cosmetic updates to multiple operation descriptions and enumerators within the __Host Migration__ service collection.
+    - `_endpoint/_host_migration.py`
+
++ Updated: Enumerator updated for the _QueryCasesIdsByFilter_ operation within the __Message Center__ service collection.
+    - `_endpoint/_message_center.py`
+
++ Updated: Updated descriptions for _GetNotificationsDetailedTranslatedV1_ and _GetNotificationsDetailedV1_ operations within the __Recon__ service collection.
+    - `_endpoint/_recon.py`
+    - `_recon.py`
+
+---
+
 # Version 1.4.5
 ## Added features and functionality
 + Added: Added new __Host Migration__ service collection with 10 new operations.
diff --git a/src/falconpy/__init__.py b/src/falconpy/__init__.py
index e0fe8feb..beaf7db3 100644
--- a/src/falconpy/__init__.py
+++ b/src/falconpy/__init__.py
@@ -90,6 +90,7 @@
 from .alerts import Alerts
 from .api_integrations import APIIntegrations
 from .api_complete import APIHarness, APIHarnessV2
+from .aspm import ASPM
 from .certificate_based_exclusions import CertificateBasedExclusions
 from .cloud_snapshots import CloudSnapshots
 from .compliance_assessments import ComplianceAssessments
@@ -105,9 +106,12 @@
 from .custom_ioa import CustomIOA
 from .custom_storage import CustomStorage
 from .d4c_registration import D4CRegistration
+from .datascanner import DataScanner
+from .delivery_settings import DeliverySettings
 from .detects import Detects
 from .device_control_policies import DeviceControlPolicies
 from .discover import Discover
+from .downloads import Downloads
 from .drift_indicators import DriftIndicators
 from .event_streams import EventStreams
 from .exposure_management import ExposureManagement
@@ -142,6 +146,7 @@
 from .prevention_policy import PreventionPolicy, PreventionPolicies
 from .quarantine import Quarantine
 from .quick_scan import QuickScan
+from .quick_scan_pro import QuickScanPro
 from .real_time_response_admin import RealTimeResponseAdmin
 from .real_time_response_audit import RealTimeResponseAudit
 from .real_time_response import RealTimeResponse
@@ -152,6 +157,7 @@
 from .scheduled_reports import ScheduledReports
 from .sensor_download import SensorDownload
 from .sensor_update_policy import SensorUpdatePolicy, SensorUpdatePolicies
+from .sensor_usage import SensorUsage
 from .sensor_visibility_exclusions import SensorVisibilityExclusions
 from .spotlight_vulnerabilities import SpotlightVulnerabilities
 from .spotlight_evaluation_logic import SpotlightEvaluationLogic
@@ -202,7 +208,8 @@
     "ContainerAlerts", "ContainerDetections", "ContainerImages", "ContainerPackages",
     "ContainerVulnerabilities", "DriftIndicators", "UnidentifiedContainers",
     "ImageAssessmentPolicies", "APIIntegrations", "ThreatGraph", "ExposureManagement",
-    "CertificateBasedExclusions", "ComplianceAssessments", "HostMigration"
+    "CertificateBasedExclusions", "ComplianceAssessments", "HostMigration", "QuickScanPro",
+    "DataScanner", "SensorUsage", "Downloads", "DeliverySettings", "ASPM"
     ]
 """
 This is free and unencumbered software released into the public domain.
diff --git a/src/falconpy/_endpoint/__init__.py b/src/falconpy/_endpoint/__init__.py
index 765ef0fa..2683e1ce 100644
--- a/src/falconpy/_endpoint/__init__.py
+++ b/src/falconpy/_endpoint/__init__.py
@@ -22,6 +22,7 @@
 from typing import List, Any
 from .deprecated import _custom_ioa_deprecated
 from .deprecated import _d4c_registration_deprecated
+from .deprecated import _datascanner_deprecated
 from .deprecated import _discover_deprecated
 from .deprecated import _fdr_deprecated
 from .deprecated import _firewall_management_deprecated
@@ -42,10 +43,11 @@
 
 from ._alerts import _alerts_endpoints
 from ._api_integrations import _api_integrations_endpoints
+from ._aspm import _aspm_endpoints
 from ._certificate_based_exclusions import _certificate_based_exclusions_endpoints
 from ._cloud_connect_aws import _cloud_connect_aws_endpoints
 from ._cloud_snapshots import _cloud_snapshots_endpoints
-from ._compliance_assessments import _complianceassessments_endpoints
+from ._compliance_assessments import _compliance_assessments_endpoints
 from ._configuration_assessment_evaluation_logic import _configuration_assessment_evaluation_logic_endpoints
 from ._configuration_assessment import _configuration_assessment_endpoints
 from ._container_alerts import _container_alerts_endpoints
@@ -57,9 +59,12 @@
 from ._custom_ioa import _custom_ioa_endpoints
 from ._custom_storage import _custom_storage_endpoints
 from ._d4c_registration import _d4c_registration_endpoints
+from ._datascanner import _datascanner_endpoints
+from ._delivery_settings import _delivery_settings_endpoints
 from ._detects import _detects_endpoints
 from ._device_control_policies import _device_control_policies_endpoints
 from ._discover import _discover_endpoints
+from ._downloads import _downloads_endpoints
 from ._drift_indicators import _drift_indicators_endpoints
 from ._event_streams import _event_streams_endpoints
 from ._exposure_management import _exposure_management_endpoints
@@ -93,6 +98,7 @@
 from ._prevention_policies import _prevention_policies_endpoints
 from ._quarantine import _quarantine_endpoints
 from ._quick_scan import _quick_scan_endpoints
+from ._quick_scan_pro import _quick_scan_pro_endpoints
 from ._real_time_response import _real_time_response_endpoints
 from ._real_time_response_admin import _real_time_response_admin_endpoints
 from ._real_time_response_audit import _real_time_response_audit_endpoints
@@ -103,6 +109,7 @@
 from ._scheduled_reports import _scheduled_reports_endpoints
 from ._sensor_download import _sensor_download_endpoints
 from ._sensor_update_policies import _sensor_update_policies_endpoints
+from ._sensor_usage import _sensor_usage_endpoints
 from ._sensor_visibility_exclusions import _sensor_visibility_exclusions_endpoints
 from ._spotlight_evaluation_logic import _spotlight_evaluation_logic_endpoints
 from ._spotlight_vulnerabilities import _spotlight_vulnerabilities_endpoints
@@ -116,10 +123,11 @@
 api_endpoints: List[Any] = []
 api_endpoints.extend(_alerts_endpoints)
 api_endpoints.extend(_api_integrations_endpoints)
+api_endpoints.extend(_aspm_endpoints)
 api_endpoints.extend(_certificate_based_exclusions_endpoints)
 api_endpoints.extend(_cloud_connect_aws_endpoints)
 api_endpoints.extend(_cloud_snapshots_endpoints)
-api_endpoints.extend(_complianceassessments_endpoints)
+api_endpoints.extend(_compliance_assessments_endpoints)
 api_endpoints.extend(_configuration_assessment_evaluation_logic_endpoints)
 api_endpoints.extend(_configuration_assessment_endpoints)
 api_endpoints.extend(_container_alerts_endpoints)
@@ -131,9 +139,12 @@
 api_endpoints.extend(_custom_ioa_endpoints)
 api_endpoints.extend(_custom_storage_endpoints)
 api_endpoints.extend(_d4c_registration_endpoints)
+api_endpoints.extend(_datascanner_endpoints)
+api_endpoints.extend(_delivery_settings_endpoints)
 api_endpoints.extend(_detects_endpoints)
 api_endpoints.extend(_device_control_policies_endpoints)
 api_endpoints.extend(_discover_endpoints)
+api_endpoints.extend(_downloads_endpoints)
 api_endpoints.extend(_drift_indicators_endpoints)
 api_endpoints.extend(_event_streams_endpoints)
 api_endpoints.extend(_exposure_management_endpoints)
@@ -167,6 +178,7 @@
 api_endpoints.extend(_prevention_policies_endpoints)
 api_endpoints.extend(_quarantine_endpoints)
 api_endpoints.extend(_quick_scan_endpoints)
+api_endpoints.extend(_quick_scan_pro_endpoints)
 api_endpoints.extend(_real_time_response_endpoints)
 api_endpoints.extend(_real_time_response_admin_endpoints)
 api_endpoints.extend(_real_time_response_audit_endpoints)
@@ -177,6 +189,7 @@
 api_endpoints.extend(_scheduled_reports_endpoints)
 api_endpoints.extend(_sensor_download_endpoints)
 api_endpoints.extend(_sensor_update_policies_endpoints)
+api_endpoints.extend(_sensor_usage_endpoints)
 api_endpoints.extend(_sensor_visibility_exclusions_endpoints)
 api_endpoints.extend(_spotlight_evaluation_logic_endpoints)
 api_endpoints.extend(_spotlight_vulnerabilities_endpoints)
@@ -192,6 +205,7 @@
 deprecated_endpoints.extend(_certificate_based_exclusions_deprecated)
 deprecated_endpoints.extend(_custom_ioa_deprecated)
 deprecated_endpoints.extend(_d4c_registration_deprecated)
+deprecated_endpoints.extend(_datascanner_deprecated)
 deprecated_endpoints.extend(_discover_deprecated)
 deprecated_endpoints.extend(_fdr_deprecated)
 deprecated_endpoints.extend(_firewall_management_deprecated)
diff --git a/src/falconpy/_endpoint/_alerts.py b/src/falconpy/_endpoint/_alerts.py
index 1239779b..5b37b013 100644
--- a/src/falconpy/_endpoint/_alerts.py
+++ b/src/falconpy/_endpoint/_alerts.py
@@ -41,7 +41,7 @@
     "PostAggregatesAlertsV1",
     "POST",
     "/alerts/aggregates/alerts/v1",
-    "retrieves aggregate values for Alerts across all CIDs",
+    "Deprecated: Please use version v2 of this endpoint. Retrieves aggregate values for Alerts across all CIDs.",
     "alerts",
     [
       {
@@ -56,7 +56,7 @@
     "PostAggregatesAlertsV2",
     "POST",
     "/alerts/aggregates/alerts/v2",
-    "retrieves aggregate values for Alerts across all CIDs",
+    "Retrieves aggregate values for Alerts across all CIDs.",
     "alerts",
     [
       {
@@ -78,7 +78,7 @@
     "PostEntitiesAlertsV1",
     "POST",
     "/alerts/entities/alerts/v1",
-    "retrieves all Alerts given their ids",
+    "Deprecated: please use version v2 of this endpoint. Retrieves all Alerts given their ids.",
     "alerts",
     [
       {
@@ -118,7 +118,7 @@
     "PostEntitiesAlertsV2",
     "POST",
     "/alerts/entities/alerts/v2",
-    "retrieves all Alerts given their composite ids",
+    "Retrieves all Alerts given their composite ids.",
     "alerts",
     [
       {
@@ -139,13 +139,23 @@
     "PatchEntitiesAlertsV2",
     "PATCH",
     "/alerts/entities/alerts/v2",
-    "Perform actions on Alerts identified by composite ID(s) in request.\nEach action has a name and a "
-    "description which describes what the action does.\nIf a request adds and removes tag in a single request, the "
-    "order of processing would be to remove tags before adding new ones in.\n\n",
+    "Deprecated: Please use version v3 of this endpoint.\nPerform actions on Alerts identified by composite "
+    "ID(s) in request.\nEach action has a name and a description which describes what the action does.\nIf a "
+    "request adds and removes tag in a single request, the order of processing would be to remove tags before "
+    "adding new ones in.\n\n",
     "alerts",
     [
       {
-        "description": "request body takes a list of action parameter request that is applied against all \"ids\" provided",
+        "description": "`ids`\n- IDs of Alerts to modify.\n\n`action_parameters` values\n- "
+        "`assign_to_uuid`\n\t- Assign Alert to user UUID, such as `00000000-0000-0000-0000-000000000000`\n- "
+        "`assign_to_user_id`\n\t- Assign Alert to user ID, such as `user@example.com`\n- `assign_to_name`\n\t- Assign "
+        "Alert to username, such as `John Doe`\n- `unassign`\n\t- Unassign Alert clears out the assigned user UUID, "
+        "user ID, and username.\n- `add_tag`\n \t- Add a tag to the Alert.\n- `remove_tag`\n\t- Remove a tag from the "
+        "Alert.\n- `remove_tags_by_prefix`\n\t- Remove tags from the Alert based on the prefix.\n- "
+        "`append_comment`\n\t- Comments are displayed with the Alert in Falcon and are usually used to provide context "
+        "or notes for other Falcon users. An Alert can have multiple comments over time.\n- `update_status` values\n\t-"
+        " `new`\n\t- `in_progress`\n\t- `reopened`\n\t- `closed`\n- `show_in_ui` values\n\t- `true`: This alert is "
+        "displayed in Falcon\n\t- `false`: This alert is not displayed in Falcon.\n",
         "name": "body",
         "in": "body",
         "required": True
@@ -169,8 +179,16 @@
         "in": "query"
       },
       {
-        "description": "request body takes a list of action parameter request that is applied against all "
-        "\"composite_ids\" provided",
+        "description": "`composite_ids`\n- CompositeIDs of Alerts to modify.\n\n`action_parameters` values\n- "
+        "`assign_to_uuid`\n\t- Assign Alert to user UUID, such as `00000000-0000-0000-0000-000000000000`\n- "
+        "`assign_to_user_id`\n\t- Assign Alert to user ID, such as `user@example.com`\n- `assign_to_name`\n\t- Assign "
+        "Alert to username, such as `John Doe`\n- `unassign`\n\t- Unassign Alert clears out the assigned user UUID, "
+        "user ID, and username.\n- `add_tag`\n \t- Add a tag to the Alert.\n- `remove_tag`\n\t- Remove a tag from the "
+        "Alert.\n- `remove_tags_by_prefix`\n\t- Remove tags from the Alert based on the prefix.\n- "
+        "`append_comment`\n\t- Comments are displayed with the Alert in Falcon and are usually used to provide context "
+        "or notes for other Falcon users. An Alert can have multiple comments over time.\n- `update_status` values\n\t-"
+        " `new`\n\t- `in_progress`\n\t- `reopened`\n\t- `closed`\n- `show_in_ui` values\n\t- `true`: This alert is "
+        "displayed in Falcon\n\t- `false`: This alert is not displayed in Falcon.\n",
         "name": "body",
         "in": "body",
         "required": True
@@ -181,7 +199,7 @@
     "GetQueriesAlertsV1",
     "GET",
     "/alerts/queries/alerts/v1",
-    "retrieves all Alerts ids that match a given query",
+    "Deprecated: please use version v2 of this endpoint. Retrieves all Alerts ids that match a given query.",
     "alerts",
     [
       {
@@ -228,7 +246,7 @@
       },
       {
         "type": "string",
-        "description": "Search all detection metadata for the provided string",
+        "description": "Search all alert metadata for the provided string",
         "name": "q",
         "in": "query"
       }
@@ -238,7 +256,7 @@
     "GetQueriesAlertsV2",
     "GET",
     "/alerts/queries/alerts/v2",
-    "retrieves all Alerts ids that match a given query",
+    "Retrieves all Alerts ids that match a given query.",
     "alerts",
     [
       {
@@ -292,7 +310,7 @@
       },
       {
         "type": "string",
-        "description": "Search all detection metadata for the provided string",
+        "description": "Search all alert metadata for the provided string",
         "name": "q",
         "in": "query"
       }
diff --git a/src/falconpy/_endpoint/_api_integrations.py b/src/falconpy/_endpoint/_api_integrations.py
index 05a9d4cd..91522ccf 100644
--- a/src/falconpy/_endpoint/_api_integrations.py
+++ b/src/falconpy/_endpoint/_api_integrations.py
@@ -73,6 +73,20 @@
       }
     ]
   ],
+  [
+    "ExecuteCommandProxy",
+    "POST",
+    "/plugins/entities/execute-proxy/v1",
+    "Execute a command and proxy the response directly.",
+    "api_integrations",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
   [
     "ExecuteCommand",
     "POST",
diff --git a/src/falconpy/_endpoint/_aspm.py b/src/falconpy/_endpoint/_aspm.py
new file mode 100644
index 00000000..6693922b
--- /dev/null
+++ b/src/falconpy/_endpoint/_aspm.py
@@ -0,0 +1,472 @@
+"""Internal API endpoint constant library.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+_aspm_endpoints = [
+  [
+    "UpsertBusinessApplications",
+    "PUT",
+    "/aspm-api-gateway/api/v1/business_applications",
+    "Create or Update Business Applications",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "GetExecutorNodes",
+    "GET",
+    "/aspm-api-gateway/api/v1/executor_nodes",
+    "Get all the relay nodes",
+    "aspm",
+    [
+      {
+        "type": "string",
+        "name": "node_type",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "integer",
+        "name": "integration_type",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "UpdateExecutorNode",
+    "PUT",
+    "/aspm-api-gateway/api/v1/executor_nodes",
+    "Update an existing relay node",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "CreateExecutorNode",
+    "POST",
+    "/aspm-api-gateway/api/v1/executor_nodes",
+    "Create a new relay node",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "DeleteExecutorNode",
+    "DELETE",
+    "/aspm-api-gateway/api/v1/executor_nodes/{}",
+    "Delete a relay node",
+    "aspm",
+    [
+      {
+        "pattern": "[0-9]+",
+        "type": "integer",
+        "name": "ID",
+        "in": "path",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "GetIntegrationTasks",
+    "GET",
+    "/aspm-api-gateway/api/v1/integration_tasks",
+    "Get all the integration tasks",
+    "aspm",
+    [
+      {
+        "type": "integer",
+        "name": "integration_task_type",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "category",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "CreateIntegrationTask",
+    "POST",
+    "/aspm-api-gateway/api/v1/integration_tasks",
+    "Create new integration task.",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "UpdateIntegrationTask",
+    "PUT",
+    "/aspm-api-gateway/api/v1/integration_tasks/{}",
+    "Update an existing integration task by its ID",
+    "aspm",
+    [
+      {
+        "pattern": "[0-9]+",
+        "type": "integer",
+        "name": "ID",
+        "in": "path",
+        "required": True
+      },
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "DeleteIntegrationTask",
+    "DELETE",
+    "/aspm-api-gateway/api/v1/integration_tasks/{}",
+    "Delete an existing integration task by its ID",
+    "aspm",
+    [
+      {
+        "pattern": "[0-9]+",
+        "type": "integer",
+        "name": "ID",
+        "in": "path",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "RunIntegrationTask",
+    "POST",
+    "/aspm-api-gateway/api/v1/integration_tasks/{}/run",
+    "Run an integration task by its ID",
+    "aspm",
+    [
+      {
+        "pattern": "[0-9]+",
+        "type": "integer",
+        "name": "ID",
+        "in": "path",
+        "required": True
+      },
+      {
+        "type": "string",
+        "name": "category",
+        "in": "query"
+      },
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "GetIntegrationTypes",
+    "GET",
+    "/aspm-api-gateway/api/v1/integration_types",
+    "Get all the integration types",
+    "aspm",
+    []
+  ],
+  [
+    "GetIntegrations",
+    "GET",
+    "/aspm-api-gateway/api/v1/integrations",
+    "Get a list of all the integrations",
+    "aspm",
+    [
+      {
+        "type": "integer",
+        "name": "integration_type",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "category",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "CreateIntegration",
+    "POST",
+    "/aspm-api-gateway/api/v1/integrations",
+    "Create a new integration",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "UpdateIntegration",
+    "PUT",
+    "/aspm-api-gateway/api/v1/integrations/{}",
+    "Update an existing integration by its ID",
+    "aspm",
+    [
+      {
+        "pattern": "[0-9]+",
+        "type": "integer",
+        "name": "ID",
+        "in": "path",
+        "required": True
+      },
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "DeleteIntegration",
+    "DELETE",
+    "/aspm-api-gateway/api/v1/integrations/{}",
+    "Delete an existing integration by its ID",
+    "aspm",
+    [
+      {
+        "pattern": "[0-9]+",
+        "type": "integer",
+        "name": "ID",
+        "in": "path",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "ExecuteQuery",
+    "POST",
+    "/aspm-api-gateway/api/v1/query",
+    "Execute a query. The syntax used is identical to that of the query page.",
+    "aspm",
+    [
+      {
+        "description": " **params details:**\n- selectFields:\n- **fields** - For filtering relevant fields "
+        "only.\n- **withoutServices** - Default is set to **true**, you will not receive information about the "
+        "services. If you want to get the relevant service, set to **false**.\n- **serviceFields**-  For filtering "
+        "relevant fields of the service (if you chose to get it)",
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "ServiceNowGetDeployments",
+    "GET",
+    "/aspm-api-gateway/api/v1/servicenow/deployments",
+    "",
+    "aspm",
+    [
+      {
+        "type": "string",
+        "name": "ql_filters",
+        "in": "query"
+      },
+      {
+        "type": "integer",
+        "name": "limit",
+        "in": "query"
+      },
+      {
+        "type": "integer",
+        "name": "offset",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "orderBy",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "direction",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "ServiceNowGetServices",
+    "GET",
+    "/aspm-api-gateway/api/v1/servicenow/services",
+    "",
+    "aspm",
+    [
+      {
+        "type": "string",
+        "name": "ql_filters",
+        "in": "query"
+      },
+      {
+        "type": "integer",
+        "name": "limit",
+        "in": "query"
+      },
+      {
+        "type": "integer",
+        "name": "offset",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "orderBy",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "direction",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "GetServicesCount",
+    "POST",
+    "/aspm-api-gateway/api/v1/services/count",
+    "Get the total amount of existing services",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "GetServiceViolationTypes",
+    "GET",
+    "/aspm-api-gateway/api/v1/services/violations/types",
+    "Get the different types of violation",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "GetTags",
+    "GET",
+    "/aspm-api-gateway/api/v1/tags",
+    "Get all the tags",
+    "aspm",
+    [
+      {
+        "type": "boolean",
+        "name": "isUnique",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "tagName",
+        "in": "query"
+      },
+      {
+        "type": "integer",
+        "name": "limit",
+        "in": "query"
+      },
+      {
+        "type": "integer",
+        "name": "offset",
+        "in": "query"
+      },
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "name": "name",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "UpsertTags",
+    "PUT",
+    "/aspm-api-gateway/api/v1/tags",
+    "Create new or update existing tag. You can update unique tags table or regular tags table",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "DeleteTags",
+    "POST",
+    "/aspm-api-gateway/api/v1/tags",
+    "Remove existing tags",
+    "aspm",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ]
+]
diff --git a/src/falconpy/_endpoint/_cloud_snapshots.py b/src/falconpy/_endpoint/_cloud_snapshots.py
index 79177adc..b4d75be8 100644
--- a/src/falconpy/_endpoint/_cloud_snapshots.py
+++ b/src/falconpy/_endpoint/_cloud_snapshots.py
@@ -37,6 +37,14 @@
 """
 
 _cloud_snapshots_endpoints = [
+  [
+    "GetCredentialsIAC",
+    "GET",
+    "/iac/entities/image-registry-credentials/v1",
+    "Gets the registry credentials (external endpoint)",
+    "cloud_snapshots",
+    []
+  ],
   [
     "ReadDeploymentsCombined",
     "GET",
diff --git a/src/falconpy/_endpoint/_compliance_assessments.py b/src/falconpy/_endpoint/_compliance_assessments.py
index 44a80825..d6868fc9 100644
--- a/src/falconpy/_endpoint/_compliance_assessments.py
+++ b/src/falconpy/_endpoint/_compliance_assessments.py
@@ -36,21 +36,21 @@
 For more information, please refer to <https://unlicense.org>
 """
 
-_complianceassessments_endpoints = [
+_compliance_assessments_endpoints = [
   [
     "extAggregateClusterAssessments",
     "GET",
     "/container-compliance/aggregates/compliance-by-clusters/v2",
     "get the assessments for each cluster",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\ncloud_info.cluster_name: Kubernetes cluster name\ncloud_info.cloud_region: Cloud "
-        "region\ncompliance_finding.framework: Compliance finding framework (available values: "
-        "CIS)\ncloud_info.cloud_account_id: Cloud account ID\ncloud_info.namespace: Kubernetes namespace\ncid: Customer "
-        "ID\ncloud_info.cloud_provider: Cloud provider\n",
+        "Filters:\ncloud_info.cloud_region: Cloud region\ncompliance_finding.framework: Compliance finding framework "
+        "(available values: CIS)\ncloud_info.cluster_name: Kubernetes cluster name\ncloud_info.cloud_account_id: Cloud "
+        "account ID\ncloud_info.namespace: Kubernetes namespace\ncloud_info.cloud_provider: Cloud provider\ncid: "
+        "Customer ID\n",
         "name": "filter",
         "in": "query"
       }
@@ -61,19 +61,19 @@
     "GET",
     "/container-compliance/aggregates/compliance-by-images/v2",
     "get the assessments for each image",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\ncloud_info.cluster_name: Kubernetes cluster name\ncompliance_finding.id: Compliance finding "
-        "ID\nimage_digest: Image digest (sha256 digest)\nimage_registry: Image registry\nimage_tag: Image "
-        "tag\nimage_id: Image ID\ncloud_info.cloud_provider: Cloud provider\nasset_type: asset type (container, "
-        "image)\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: critical, "
-        "3: high, 2: medium, 1:low)\ncompliance_finding.framework: Compliance finding framework (available values: "
-        "CIS)\nimage_repository: Image repository\ncloud_info.cloud_account_id: Cloud account ID\ncloud_info.namespace: "
-        " Kubernetes namespace\ncloud_info.cloud_region: Cloud region\ncompliance_finding.name: Compliance finding "
-        "Name\ncid: Customer ID\n",
+        "Filters:\nimage_id: Image ID\nimage_repository: Image repository\ncloud_info.cloud_region: Cloud region\ncid: "
+        "Customer ID\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: "
+        "critical, 3: high, 2: medium, 1:low)\ncloud_info.cloud_account_id: Cloud account ID\ncloud_info.namespace: "
+        "Kubernetes namespace\ncompliance_finding.name: Compliance finding Name\ncompliance_finding.framework: "
+        "Compliance finding framework (available values: CIS)\ncloud_info.cluster_name: Kubernetes cluster "
+        "name\nimage_tag: Image tag\ncloud_info.cloud_provider: Cloud provider\nasset_type: asset type (container, "
+        "image)\nimage_registry: Image registry\nimage_digest: Image digest (sha256 digest)\ncompliance_finding.id: "
+        "Compliance finding ID\n",
         "name": "filter",
         "in": "query"
       },
@@ -97,18 +97,18 @@
     "GET",
     "/container-compliance/aggregates/compliance-by-rules/v2",
     "get the assessments for each rule",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\nimage_registry: Image registry\nimage_repository: Image repository\ncompliance_finding.framework: "
-        "Compliance finding framework (available values: CIS)\ncloud_info.cloud_region: Cloud "
-        "region\ncloud_info.cloud_account_id: Cloud account ID\ncloud_info.cloud_provider: Cloud "
-        "provider\ncompliance_finding.id: Compliance finding ID\ncompliance_finding.severity: Compliance finding "
-        "severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)\ncloud_info.cluster_name: "
-        "Kubernetes cluster name\nimage_id: Image ID\nimage_tag: Image tag\ncompliance_finding.name: Compliance finding "
-        "Name\nimage_digest: Image digest (sha256 digest)\ncid: Customer ID\n",
+        "Filters:\ncloud_info.cloud_provider: Cloud provider\nimage_repository: Image "
+        "repository\ncloud_info.cloud_region: Cloud region\ncloud_info.cloud_account_id: Cloud account "
+        "ID\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: critical, 3: "
+        "high, 2: medium, 1:low)\nimage_tag: Image tag\ncloud_info.cluster_name: Kubernetes cluster name\nimage_id: "
+        "Image ID\nimage_registry: Image registry\ncompliance_finding.name: Compliance finding "
+        "Name\ncompliance_finding.framework: Compliance finding framework (available values: CIS)\ncid: Customer "
+        "ID\ncompliance_finding.id: Compliance finding ID\nimage_digest: Image digest (sha256 digest)\n",
         "name": "filter",
         "in": "query"
       }
@@ -119,18 +119,18 @@
     "GET",
     "/container-compliance/aggregates/failed-containers-by-rules/v2",
     "get the containers grouped into rules on which they failed",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\ncloud_info.cloud_region: Cloud region\nimage_registry: Image registry\ncloud_info.cloud_account_id: "
-        "Cloud account ID\ncompliance_finding.name: Compliance finding Name\nimage_tag: Image "
-        "tag\ncloud_info.cluster_name: Kubernetes cluster name\ncompliance_finding.framework: Compliance finding "
-        "framework (available values: CIS)\ncloud_info.cloud_provider: Cloud provider\ncompliance_finding.id: "
-        "Compliance finding ID\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 "
-        "(4: critical, 3: high, 2: medium, 1:low)\ncid: Customer ID\nimage_id: Image ID\nimage_digest: Image digest "
-        "(sha256 digest)\ncloud_info.namespace: Kubernetes namespace\nimage_repository: Image repository\n",
+        "Filters:\ncloud_info.cluster_name: Kubernetes cluster name\ncloud_info.cloud_account_id: Cloud account "
+        "ID\ncloud_info.cloud_region: Cloud region\ncompliance_finding.id: Compliance finding "
+        "ID\ncompliance_finding.name: Compliance finding Name\nimage_registry: Image registry\ncloud_info.namespace: "
+        "Kubernetes namespace\nimage_tag: Image tag\nimage_id: Image ID\nimage_repository: Image repository\ncid: "
+        "Customer ID\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: "
+        "critical, 3: high, 2: medium, 1:low)\nimage_digest: Image digest (sha256 digest)\ncloud_info.cloud_provider: "
+        "Cloud provider\ncompliance_finding.framework: Compliance finding framework (available values: CIS)\n",
         "name": "filter",
         "in": "query"
       }
@@ -141,19 +141,18 @@
     "GET",
     "/container-compliance/aggregates/failed-containers-count-by-severity/v2",
     "get the failed containers count grouped into severity levels",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\ncloud_info.namespace: Kubernetes namespace\ncloud_info.cloud_provider: Cloud "
-        "provider\ncompliance_finding.id: Compliance finding ID\nimage_registry: Image "
-        "registry\ncompliance_finding.name: Compliance finding Name\ncompliance_finding.severity: Compliance finding "
-        "severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)\ncloud_info.cluster_name: "
-        "Kubernetes cluster name\ncloud_info.cloud_account_id: Cloud account ID\nimage_id: Image ID\nimage_digest: "
-        "Image digest (sha256 digest)\nimage_repository: Image repository\nimage_tag: Image "
-        "tag\ncompliance_finding.framework: Compliance finding framework (available values: CIS)\ncid: Customer "
-        "ID\ncloud_info.cloud_region: Cloud region\n",
+        "Filters:\ncompliance_finding.name: Compliance finding Name\ncompliance_finding.severity: Compliance finding "
+        "severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)\ncloud_info.cloud_account_id: "
+        "Cloud account ID\nimage_tag: Image tag\ncid: Customer ID\ncompliance_finding.id: Compliance finding "
+        "ID\nimage_digest: Image digest (sha256 digest)\ncloud_info.cluster_name: Kubernetes cluster "
+        "name\ncloud_info.cloud_provider: Cloud provider\nimage_repository: Image repository\ncloud_info.cloud_region: "
+        "Cloud region\nimage_registry: Image registry\nimage_id: Image ID\ncloud_info.namespace: Kubernetes "
+        "namespace\ncompliance_finding.framework: Compliance finding framework (available values: CIS)\n",
         "name": "filter",
         "in": "query"
       }
@@ -164,19 +163,19 @@
     "GET",
     "/container-compliance/aggregates/failed-images-by-rules/v2",
     "get the images grouped into rules on which they failed",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\nimage_repository: Image repository\nimage_tag: Image tag\ncloud_info.cluster_name: Kubernetes "
-        "cluster name\ncloud_info.cloud_region: Cloud region\ncloud_info.cloud_account_id: Cloud account "
-        "ID\nimage_registry: Image registry\ncompliance_finding.name: Compliance finding "
-        "Name\ncompliance_finding.framework: Compliance finding framework (available values: "
-        "CIS)\ncloud_info.namespace: Kubernetes namespace\ncid: Customer ID\ncompliance_finding.severity: Compliance "
-        "finding severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, "
-        "1:low)\ncloud_info.cloud_provider: Cloud provider\ncompliance_finding.id: Compliance finding ID\nimage_id: "
-        "Image ID\nimage_digest: Image digest (sha256 digest)\n",
+        "Filters:\ncloud_info.cluster_name: Kubernetes cluster name\nimage_digest: Image digest (sha256 "
+        "digest)\nimage_tag: Image tag\ncid: Customer ID\ncompliance_finding.id: Compliance finding "
+        "ID\ncompliance_finding.name: Compliance finding Name\ncloud_info.cloud_provider: Cloud "
+        "provider\ncloud_info.cloud_region: Cloud region\ncloud_info.namespace: Kubernetes namespace\nimage_registry: "
+        "Image registry\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: "
+        "critical, 3: high, 2: medium, 1:low)\nimage_id: Image ID\ncloud_info.cloud_account_id: Cloud account "
+        "ID\ncompliance_finding.framework: Compliance finding framework (available values: CIS)\nimage_repository: "
+        "Image repository\n",
         "name": "filter",
         "in": "query"
       }
@@ -187,19 +186,18 @@
     "GET",
     "/container-compliance/aggregates/failed-images-count-by-severity/v2",
     "get the failed images count grouped into severity levels",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\nimage_tag: Image tag\ncompliance_finding.name: Compliance finding Name\ncompliance_finding.severity: "
-        " Compliance finding severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, "
-        "1:low)\ncloud_info.cloud_account_id: Cloud account ID\nimage_digest: Image digest (sha256 "
-        "digest)\nimage_registry: Image registry\nimage_id: Image ID\ncloud_info.namespace: Kubernetes "
-        "namespace\ncompliance_finding.framework: Compliance finding framework (available values: "
-        "CIS)\nimage_repository: Image repository\ncloud_info.cloud_provider: Cloud provider\ncid: Customer "
-        "ID\ncloud_info.cloud_region: Cloud region\ncloud_info.cluster_name: Kubernetes cluster "
-        "name\ncompliance_finding.id: Compliance finding ID\n",
+        "Filters:\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: critical, "
+        " 3: high, 2: medium, 1:low)\ncloud_info.cloud_account_id: Cloud account ID\ncloud_info.cloud_region: Cloud "
+        "region\ncompliance_finding.id: Compliance finding ID\ncompliance_finding.framework: Compliance finding "
+        "framework (available values: CIS)\nimage_registry: Image registry\ncloud_info.cluster_name: Kubernetes cluster "
+        " name\nimage_id: Image ID\ncloud_info.cloud_provider: Cloud provider\ncid: Customer ID\ncloud_info.namespace: "
+        "Kubernetes namespace\nimage_digest: Image digest (sha256 digest)\nimage_tag: Image tag\nimage_repository: "
+        "Image repository\ncompliance_finding.name: Compliance finding Name\n",
         "name": "filter",
         "in": "query"
       }
@@ -210,19 +208,19 @@
     "GET",
     "/container-compliance/aggregates/failed-rules-by-clusters/v2",
     "get the failed rules for each cluster grouped into severity levels",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\ncompliance_finding.name: Compliance finding Name\nimage_digest: Image digest (sha256 "
-        "digest)\nimage_tag: Image tag\ncloud_info.cloud_account_id: Cloud account ID\nimage_id: Image "
-        "ID\nimage_registry: Image registry\ncloud_info.cloud_region: Cloud region\nasset_type: asset type (container, "
-        "image)\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: critical, "
-        "3: high, 2: medium, 1:low)\ncid: Customer ID\ncompliance_finding.id: Compliance finding "
-        "ID\ncompliance_finding.framework: Compliance finding framework (available values: "
-        "CIS)\ncloud_info.cluster_name: Kubernetes cluster name\nimage_repository: Image "
-        "repository\ncloud_info.cloud_provider: Cloud provider\n",
+        "Filters:\ncloud_info.cloud_account_id: Cloud account ID\nimage_digest: Image digest (sha256 "
+        "digest)\ncloud_info.cloud_region: Cloud region\ncid: Customer ID\nimage_registry: Image "
+        "registry\ncloud_info.cloud_provider: Cloud provider\ncompliance_finding.id: Compliance finding "
+        "ID\ncompliance_finding.framework: Compliance finding framework (available values: CIS)\nasset_type: asset type "
+        " (container, image)\ncompliance_finding.name: Compliance finding Name\ncloud_info.cluster_name: Kubernetes "
+        "cluster name\nimage_tag: Image tag\nimage_id: Image ID\nimage_repository: Image "
+        "repository\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: "
+        "critical, 3: high, 2: medium, 1:low)\n",
         "name": "filter",
         "in": "query"
       }
@@ -233,19 +231,19 @@
     "GET",
     "/container-compliance/aggregates/failed-rules-by-images/v2",
     "get images with failed rules, rule count grouped by severity for each image",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\ncompliance_finding.id: Compliance finding ID\nimage_tag: Image tag\ncloud_info.cluster_name: "
-        "Kubernetes cluster name\nimage_registry: Image registry\ncloud_info.cloud_provider: Cloud "
-        "provider\ncompliance_finding.name: Compliance finding Name\ncid: Customer ID\ncloud_info.cloud_region: Cloud "
-        "region\ncloud_info.cloud_account_id: Cloud account ID\nasset_type: asset type (container, "
-        "image)\ncompliance_finding.severity: Compliance finding severity; available values: 4, 3, 2, 1 (4: critical, "
-        "3: high, 2: medium, 1:low)\nimage_id: Image ID\nimage_digest: Image digest (sha256 "
-        "digest)\ncompliance_finding.framework: Compliance finding framework (available values: CIS)\nimage_repository: "
-        "Image repository\ncloud_info.namespace: Kubernetes namespace\n",
+        "Filters:\ncompliance_finding.id: Compliance finding ID\nimage_registry: Image registry\nimage_digest: Image "
+        "digest (sha256 digest)\nasset_type: asset type (container, image)\ncloud_info.cloud_region: Cloud "
+        "region\ncompliance_finding.name: Compliance finding Name\ncompliance_finding.severity: Compliance finding "
+        "severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)\nimage_tag: Image "
+        "tag\nimage_repository: Image repository\ncid: Customer ID\nimage_id: Image ID\ncloud_info.namespace: "
+        "Kubernetes namespace\ncloud_info.cloud_account_id: Cloud account ID\ncloud_info.cloud_provider: Cloud "
+        "provider\ncompliance_finding.framework: Compliance finding framework (available values: "
+        "CIS)\ncloud_info.cluster_name: Kubernetes cluster name\n",
         "name": "filter",
         "in": "query"
       }
@@ -256,18 +254,19 @@
     "GET",
     "/container-compliance/aggregates/failed-rules-count-by-severity/v2",
     "get the failed rules count grouped into severity levels",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
-        "description": "Filter results using a query in Falcon Query Language (FQL). Supported Filters:\ncid: "
-        "Customer ID\ncloud_info.cloud_region: Cloud region\ncompliance_finding.id: Compliance finding ID\nimage_id: "
-        "Image ID\nimage_tag: Image tag\nimage_digest: Image digest (sha256 digest)\ncompliance_finding.framework: "
-        "Compliance finding framework (available values: CIS)\nimage_repository: Image "
-        "repository\ncloud_info.cloud_account_id: Cloud account ID\ncompliance_finding.severity: Compliance finding "
-        "severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)\nasset_type: asset type "
-        "(container, image)\ncloud_info.cluster_name: Kubernetes cluster name\ncloud_info.cloud_provider: Cloud "
-        "provider\nimage_registry: Image registry\ncompliance_finding.name: Compliance finding Name\n",
+        "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
+        "Filters:\ncompliance_finding.framework: Compliance finding framework (available values: CIS)\nimage_id: Image "
+        "ID\ncompliance_finding.name: Compliance finding Name\nimage_digest: Image digest (sha256 "
+        "digest)\ncloud_info.cloud_account_id: Cloud account ID\nimage_repository: Image "
+        "repository\ncompliance_finding.id: Compliance finding ID\ncompliance_finding.severity: Compliance finding "
+        "severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)\ncloud_info.cloud_provider: "
+        "Cloud provider\ncid: Customer ID\nasset_type: asset type (container, image)\ncloud_info.cloud_region: Cloud "
+        "region\nimage_registry: Image registry\nimage_tag: Image tag\ncloud_info.cluster_name: Kubernetes cluster "
+        "name\n",
         "name": "filter",
         "in": "query"
       }
@@ -278,19 +277,19 @@
     "GET",
     "/container-compliance/aggregates/rules-by-status/v2",
     "get the rules grouped by their statuses",
-    "complianceassessments",
+    "compliance_assessments",
     [
       {
         "type": "string",
         "description": "Filter results using a query in Falcon Query Language (FQL). Supported "
-        "Filters:\ncompliance_finding.id: Compliance finding ID\nimage_tag: Image tag\ncompliance_finding.name: "
-        "Compliance finding Name\nasset_type: asset type (container, image)\ncompliance_finding.severity: Compliance "
-        "finding severity; available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)\ncid: Customer "
-        "ID\ncontainer_name: Container name\ncloud_info.cluster_name: Kubernetes cluster name\nimage_repository: Image "
-        "repository\ncloud_info.cloud_provider: Cloud provider\nimage_registry: Image "
-        "registry\ncompliance_finding.framework: Compliance finding framework (available values: "
-        "CIS)\ncloud_info.cloud_region: Cloud region\ncloud_info.cloud_account_id: Cloud account ID\nimage_id: Image "
-        "ID\nimage_digest: Image digest (sha256 digest)\ncontainer_id: Container ID\n",
+        "Filters:\ncompliance_finding.name: Compliance finding Name\ncompliance_finding.framework: Compliance finding "
+        "framework (available values: CIS)\nimage_registry: Image registry\ncontainer_id: Container "
+        "ID\ncloud_info.cloud_region: Cloud region\ncid: Customer ID\ncloud_info.cloud_account_id: Cloud account "
+        "ID\ncontainer_name: Container name\ncloud_info.cloud_provider: Cloud provider\nimage_repository: Image "
+        "repository\nimage_id: Image ID\ncompliance_finding.severity: Compliance finding severity; available values: 4, "
+        " 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)\ncloud_info.cluster_name: Kubernetes cluster "
+        "name\nasset_type: asset type (container, image)\nimage_tag: Image tag\ncompliance_finding.id: Compliance "
+        "finding ID\nimage_digest: Image digest (sha256 digest)\n",
         "name": "filter",
         "in": "query"
       }
diff --git a/src/falconpy/_endpoint/_container_images.py b/src/falconpy/_endpoint/_container_images.py
index aae32f0d..4abc6bd8 100644
--- a/src/falconpy/_endpoint/_container_images.py
+++ b/src/falconpy/_endpoint/_container_images.py
@@ -95,8 +95,24 @@
         "type": "string",
         "description": "Filter images using a query in Falcon Query Language (FQL). Supported filters:  arch,b"
         "ase_os,cid,container_id,container_running_status,cps_rating,crowdstrike_user,cve_id,detection_count,detection_"
-        "name,detection_severity,first_seen,image_digest,image_id,layer_digest,package_name_version,registry,repository"
-        ",tag,vulnerability_count,vulnerability_severity",
+        "name,detection_severity,first_seen,image_digest,image_id,include_base_image_vuln,layer_digest,package_name_ver"
+        "sion,registry,repository,source,tag,vulnerability_count,vulnerability_severity",
+        "name": "filter",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "CombinedBaseImages",
+    "GET",
+    "/container-security/combined/base-images/v1",
+    "Retrieve base images for provided filter",
+    "container_images",
+    [
+      {
+        "type": "string",
+        "description": "Search base images using a query in Falcon Query Language (FQL). Supported filters:  "
+        "image_digest,image_id,registry,repository,tag",
         "name": "filter",
         "in": "query"
       }
@@ -132,7 +148,8 @@
       {
         "type": "string",
         "description": "The fields to sort the records on. Supported columns:  [first_seen "
-        "highest_detection_severity highest_vulnerability_severity image_digest image_id registry repository tag]",
+        "highest_detection_severity highest_vulnerability_severity image_digest image_id registry repository source "
+        "tag]",
         "name": "sort",
         "in": "query"
       }
@@ -218,8 +235,8 @@
         "type": "string",
         "description": "Filter images using a query in Falcon Query Language (FQL). Supported filters:  arch,b"
         "ase_os,cid,container_id,container_running_status,cps_rating,crowdstrike_user,cve_id,detection_count,detection_"
-        "name,detection_severity,first_seen,image_digest,image_id,layer_digest,package_name_version,registry,repository"
-        ",tag,vulnerability_count,vulnerability_severity",
+        "name,detection_severity,first_seen,image_digest,image_id,include_base_image_vuln,layer_digest,package_name_ver"
+        "sion,registry,repository,source,tag,vulnerability_count,vulnerability_severity",
         "name": "filter",
         "in": "query"
       },
@@ -251,7 +268,7 @@
         "type": "string",
         "description": "The fields to sort the records on. Supported columns:  [base_os cid detections "
         "firstScanned first_seen highest_cps_current_rating highest_detection_severity highest_vulnerability_severity "
-        "image_digest image_id last_seen layers_with_vulnerabilities packages registry repository tag "
+        "image_digest image_id last_seen layers_with_vulnerabilities packages registry repository source tag "
         "vulnerabilities]",
         "name": "sort",
         "in": "query"
@@ -292,6 +309,12 @@
         "name": "tag",
         "in": "query",
         "required": True
+      },
+      {
+        "type": "boolean",
+        "description": "include base image vulnerabilities",
+        "name": "include_base_image_vuln",
+        "in": "query"
       }
     ]
   ],
@@ -329,6 +352,46 @@
         "name": "tag",
         "in": "query",
         "required": True
+      },
+      {
+        "type": "boolean",
+        "description": "include base image vulnerabilities",
+        "name": "include_base_image_vuln",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "CreateBaseImagesEntities",
+    "POST",
+    "/container-security/entities/base-images/v1",
+    "Creates base images using the provided details",
+    "container_images",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "DeleteBaseImages",
+    "DELETE",
+    "/container-security/entities/base-images/v1",
+    "Delete base images by base image uuid",
+    "container_images",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "BaseImageIDs",
+        "name": "ids",
+        "in": "query",
+        "required": True
       }
     ]
   ]
diff --git a/src/falconpy/_endpoint/_container_vulnerabilities.py b/src/falconpy/_endpoint/_container_vulnerabilities.py
index 85db91d2..90dfc12b 100644
--- a/src/falconpy/_endpoint/_container_vulnerabilities.py
+++ b/src/falconpy/_endpoint/_container_vulnerabilities.py
@@ -49,7 +49,7 @@
         "description": "Filter vulnerabilities using a query in Falcon Query Language (FQL). Supported "
         "filters: base_os,cid,container_id,container_running_status,containers_impacted_range,cps_rating,cve_id,cvss_sc"
         "ore,description,exploited_status,exploited_status_name,fix_status,image_digest,image_id,images_impacted_range,"
-        "package_name_version,registry,repository,severity,tag",
+        "include_base_image_vuln,package_name_version,registry,repository,severity,tag",
         "name": "filter",
         "in": "query"
       },
@@ -79,7 +79,7 @@
         "description": "Filter vulnerabilities using a query in Falcon Query Language (FQL). Supported "
         "filters: base_os,cid,container_id,container_running_status,containers_impacted_range,cps_rating,cve_id,cvss_sc"
         "ore,description,exploited_status,exploited_status_name,fix_status,image_digest,image_id,images_impacted_range,"
-        "package_name_version,registry,repository,severity,tag",
+        "include_base_image_vuln,package_name_version,registry,repository,severity,tag",
         "name": "filter",
         "in": "query"
       },
@@ -109,7 +109,7 @@
         "description": "Filter vulnerabilities using a query in Falcon Query Language (FQL). Supported "
         "filters: base_os,cid,container_id,container_running_status,containers_impacted_range,cps_rating,cve_id,cvss_sc"
         "ore,description,exploited_status,exploited_status_name,fix_status,image_digest,image_id,images_impacted_range,"
-        "package_name_version,registry,repository,severity,tag",
+        "include_base_image_vuln,package_name_version,registry,repository,severity,tag",
         "name": "filter",
         "in": "query"
       },
@@ -139,7 +139,7 @@
         "description": "Filter vulnerabilities using a query in Falcon Query Language (FQL). Supported "
         "filters: base_os,cid,container_id,container_running_status,containers_impacted_range,cps_rating,cve_id,cvss_sc"
         "ore,description,exploited_status,exploited_status_name,fix_status,image_digest,image_id,images_impacted_range,"
-        "package_name_version,registry,repository,severity,tag",
+        "include_base_image_vuln,package_name_version,registry,repository,severity,tag",
         "name": "filter",
         "in": "query"
       },
@@ -169,7 +169,7 @@
         "description": "Filter vulnerabilities using a query in Falcon Query Language (FQL). Supported "
         "filters: base_os,cid,container_id,container_running_status,containers_impacted_range,cps_rating,cve_id,cvss_sc"
         "ore,description,exploited_status,exploited_status_name,fix_status,image_digest,image_id,images_impacted_range,"
-        "package_name_version,registry,repository,severity,tag",
+        "include_base_image_vuln,package_name_version,registry,repository,severity,tag",
         "name": "filter",
         "in": "query"
       },
@@ -260,8 +260,8 @@
       {
         "type": "string",
         "description": "Filter the vulnerabilities using a query in Falcon Query Language (FQL). Supported "
-        "vulnerability filters: cid,cps_rating,cve_id,cvss_score,exploited_status,exploited_status_name,is_zero_day,rem"
-        "ediation_available,severity",
+        "vulnerability filters: cid,cps_rating,cve_id,cvss_score,exploited_status,exploited_status_name,include_base_im"
+        "age_vuln,is_zero_day,remediation_available,severity",
         "name": "filter",
         "in": "query"
       },
@@ -319,7 +319,7 @@
         "description": "Filter vulnerabilities using a query in Falcon Query Language (FQL). Supported "
         "filters: base_os,cid,container_id,container_running_status,containers_impacted_range,cps_rating,cve_id,cvss_sc"
         "ore,description,exploited_status,exploited_status_name,fix_status,image_digest,image_id,images_impacted_range,"
-        "package_name_version,registry,repository,severity,tag",
+        "include_base_image_vuln,package_name_version,registry,repository,severity,tag",
         "name": "filter",
         "in": "query"
       },
diff --git a/src/falconpy/_endpoint/_cspm_registration.py b/src/falconpy/_endpoint/_cspm_registration.py
index d9237c54..aebf915d 100644
--- a/src/falconpy/_endpoint/_cspm_registration.py
+++ b/src/falconpy/_endpoint/_cspm_registration.py
@@ -231,6 +231,20 @@
         "description": "Region",
         "name": "region",
         "in": "query"
+      },
+      {
+        "enum": [
+          "aws-url",
+          "aws-iom-url",
+          "aws-ioa-url",
+          "aws-sensor-management-url",
+          "aws-dspm-url",
+          "aws-idp-url"
+        ],
+        "type": "string",
+        "description": "Template to be rendered",
+        "name": "template",
+        "in": "query"
       }
     ]
   ],
@@ -262,13 +276,23 @@
         "name": "template",
         "in": "query"
       },
+      {
+        "enum": [
+          "commercial",
+          "gov"
+        ],
+        "type": "string",
+        "description": "Type of account, it can be commercial or gov",
+        "name": "account_type",
+        "in": "query"
+      },
       {
         "type": "array",
         "items": {
           "type": "string"
         },
         "collectionFormat": "multi",
-        "description": "The list of accounts to register",
+        "description": "The list of accounts to register, values should be in the form: account,profile",
         "name": "accounts",
         "in": "query"
       },
@@ -290,6 +314,29 @@
         "name": "sensor_management_enabled",
         "in": "query"
       },
+      {
+        "enum": [
+          "true",
+          "false"
+        ],
+        "type": "string",
+        "name": "dspm_enabled",
+        "in": "query"
+      },
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "name": "dspm_regions",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "dspm_role",
+        "in": "query"
+      },
       {
         "enum": [
           "true",
diff --git a/src/falconpy/_endpoint/_custom_ioa.py b/src/falconpy/_endpoint/_custom_ioa.py
index 89ab11e0..2bd06983 100644
--- a/src/falconpy/_endpoint/_custom_ioa.py
+++ b/src/falconpy/_endpoint/_custom_ioa.py
@@ -358,7 +358,7 @@
           "name"
         ],
         "type": "string",
-        "description": "Possible order by fields: {enabled, name, created_by, created_on, modified_by, modified_on}",
+        "description": "Possible order by fields: {created_by, created_on, enabled, modified_by, modified_on, name}",
         "name": "sort",
         "in": "query"
       },
@@ -408,7 +408,7 @@
           "name"
         ],
         "type": "string",
-        "description": "Possible order by fields: {enabled, name, created_by, created_on, modified_by, modified_on}",
+        "description": "Possible order by fields: {created_by, created_on, enabled, modified_by, modified_on, name}",
         "name": "sort",
         "in": "query"
       },
@@ -483,10 +483,10 @@
           "rules.ruletype_name"
         ],
         "type": "string",
-        "description": "Possible order by fields: {rules.current_version.name, "
-        "rules.current_version.description, rules.current_version.pattern_severity, rules.current_version.modified_by, "
-        "rules.current_version.modified_on, rules.ruletype_name, rules.enabled, rules.current_version.action_label, "
-        "rules.created_by, rules.created_on}",
+        "description": "Possible order by fields: {rules.created_by, rules.created_on, "
+        "rules.current_version.action_label, rules.current_version.description, rules.current_version.modified_by, "
+        "rules.current_version.modified_on, rules.current_version.name, rules.current_version.pattern_severity, "
+        "rules.enabled, rules.ruletype_name}",
         "name": "sort",
         "in": "query"
       },
diff --git a/src/falconpy/_endpoint/_custom_storage.py b/src/falconpy/_endpoint/_custom_storage.py
index 9620f27d..4203187a 100644
--- a/src/falconpy/_endpoint/_custom_storage.py
+++ b/src/falconpy/_endpoint/_custom_storage.py
@@ -264,5 +264,280 @@
         "required": True
       }
     ]
+  ],
+  [
+    "ListObjectsByVersion",
+    "GET",
+    "/customobjects/v1/collections/{collection_name}/{collection_version}/objects",
+    "List the object keys in the specified collection in alphabetical order",
+    "custom_storage",
+    [
+      {
+        "maxLength": 255,
+        "minLength": 1,
+        "type": "string",
+        "description": "The name of the collection",
+        "name": "collection_name",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 20,
+        "minLength": 1,
+        "type": "string",
+        "description": "The version of the collection",
+        "name": "collection_version",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 1000,
+        "minLength": 1,
+        "type": "string",
+        "description": "The end key to end listing to",
+        "name": "end",
+        "in": "query",
+        "allowEmptyValue": True
+      },
+      {
+        "type": "integer",
+        "description": "The limit of results to return",
+        "name": "limit",
+        "in": "query",
+        "allowEmptyValue": True
+      },
+      {
+        "maxLength": 1000,
+        "minLength": 1,
+        "type": "string",
+        "description": "The start key to start listing from",
+        "name": "start",
+        "in": "query",
+        "allowEmptyValue": True
+      }
+    ]
+  ],
+  [
+    "SearchObjectsByVersion",
+    "POST",
+    "/customobjects/v1/collections/{collection_name}/{collection_version}/objects",
+    "Search for objects that match the specified filter criteria (returns metadata, not actual objects)",
+    "custom_storage",
+    [
+      {
+        "maxLength": 255,
+        "minLength": 1,
+        "type": "string",
+        "description": "The name of the collection",
+        "name": "collection_name",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 20,
+        "minLength": 1,
+        "type": "string",
+        "description": "The version of the collection",
+        "name": "collection_version",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 255,
+        "minLength": 1,
+        "type": "string",
+        "description": "The filter to limit the returned results.",
+        "name": "filter",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "integer",
+        "description": "The limit of results to return",
+        "name": "limit",
+        "in": "query",
+        "allowEmptyValue": True
+      },
+      {
+        "type": "integer",
+        "description": "The offset of results to return",
+        "name": "offset",
+        "in": "query",
+        "allowEmptyValue": True
+      },
+      {
+        "maxLength": 255,
+        "minLength": 1,
+        "type": "string",
+        "description": "The sort order for the returned results.",
+        "name": "sort",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "GetVersionedObject",
+    "GET",
+    "/customobjects/v1/collections/{collection_name}/{collection_version}/objects/{object_key}",
+    "Get the bytes for the specified object",
+    "custom_storage",
+    [
+      {
+        "maxLength": 255,
+        "minLength": 1,
+        "type": "string",
+        "description": "The name of the collection",
+        "name": "collection_name",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 20,
+        "minLength": 1,
+        "type": "string",
+        "description": "The version of the collection",
+        "name": "collection_version",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 1000,
+        "minLength": 1,
+        "type": "string",
+        "description": "The object key",
+        "name": "object_key",
+        "in": "path",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "PutObjectByVersion",
+    "PUT",
+    "/customobjects/v1/collections/{collection_name}/{collection_version}/objects/{object_key}",
+    "Put the specified new object at the given key or overwrite an existing object at the given key",
+    "custom_storage",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      },
+      {
+        "maxLength": 255,
+        "minLength": 1,
+        "type": "string",
+        "description": "The name of the collection",
+        "name": "collection_name",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 20,
+        "minLength": 1,
+        "type": "string",
+        "description": "The version of the collection",
+        "name": "collection_version",
+        "in": "path",
+        "required": True
+      },
+      {
+        "type": "boolean",
+        "description": "If false, run the operation as normal.  If true, validate that the request *would* "
+        "succeed, but don't execute it.",
+        "name": "dry_run",
+        "in": "query",
+        "allowEmptyValue": True
+      },
+      {
+        "maxLength": 1000,
+        "minLength": 1,
+        "type": "string",
+        "description": "The object key",
+        "name": "object_key",
+        "in": "path",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "DeleteVersionedObject",
+    "DELETE",
+    "/customobjects/v1/collections/{collection_name}/{collection_version}/objects/{object_key}",
+    "Delete the specified versioned object",
+    "custom_storage",
+    [
+      {
+        "maxLength": 255,
+        "minLength": 1,
+        "type": "string",
+        "description": "The name of the collection",
+        "name": "collection_name",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 20,
+        "minLength": 1,
+        "type": "string",
+        "description": "The version of the collection",
+        "name": "collection_version",
+        "in": "path",
+        "required": True
+      },
+      {
+        "type": "boolean",
+        "description": "If false, run the operation as normal.  If true, validate that the request *would* "
+        "succeed, but don't execute it.",
+        "name": "dry_run",
+        "in": "query",
+        "allowEmptyValue": True
+      },
+      {
+        "maxLength": 1000,
+        "minLength": 1,
+        "type": "string",
+        "description": "The object key",
+        "name": "object_key",
+        "in": "path",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "GetVersionedObjectMetadata",
+    "GET",
+    "/customobjects/v1/collections/{collection_name}/{collection_version}/objects/{object_key}/metadata",
+    "Get the metadata for the specified object",
+    "custom_storage",
+    [
+      {
+        "maxLength": 255,
+        "minLength": 1,
+        "type": "string",
+        "description": "The name of the collection",
+        "name": "collection_name",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 20,
+        "minLength": 1,
+        "type": "string",
+        "description": "The version of the collection",
+        "name": "collection_version",
+        "in": "path",
+        "required": True
+      },
+      {
+        "maxLength": 1000,
+        "minLength": 1,
+        "type": "string",
+        "description": "The object key",
+        "name": "object_key",
+        "in": "path",
+        "required": True
+      }
+    ]
   ]
 ]
diff --git a/src/falconpy/_endpoint/_d4c_registration.py b/src/falconpy/_endpoint/_d4c_registration.py
index c5be6787..706cb59c 100644
--- a/src/falconpy/_endpoint/_d4c_registration.py
+++ b/src/falconpy/_endpoint/_d4c_registration.py
@@ -187,10 +187,10 @@
       },
       {
         "enum": [
-          "aws-bash",
-          "aws-terraform"
+          "aws-bash"
         ],
         "type": "string",
+        "default": "aws-bash",
         "description": "Template to be rendered",
         "name": "template",
         "in": "query"
@@ -223,6 +223,29 @@
         "name": "sensor_management_enabled",
         "in": "query"
       },
+      {
+        "enum": [
+          "true",
+          "false"
+        ],
+        "type": "string",
+        "name": "dspm_enabled",
+        "in": "query"
+      },
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "name": "dspm_regions",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "name": "dspm_role",
+        "in": "query"
+      },
       {
         "enum": [
           "true",
diff --git a/src/falconpy/_endpoint/_datascanner.py b/src/falconpy/_endpoint/_datascanner.py
new file mode 100644
index 00000000..799d9e87
--- /dev/null
+++ b/src/falconpy/_endpoint/_datascanner.py
@@ -0,0 +1,95 @@
+"""Internal API endpoint constant library.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+_datascanner_endpoints = [
+  [
+    "get_image_registry_credentials",
+    "GET",
+    "/data-security-dspm/entities/image-registry-credentials/v1",
+    "",
+    "datascanner",
+    []
+  ],
+  [
+    "handle",
+    "POST",
+    "/data-security-dspm/entities/kafka-rest-produce/v1",
+    "",
+    "datascanner",
+    []
+  ],
+  [
+    "get_data_scanner_tasks",
+    "GET",
+    "/data-security-dspm/entities/scanner-tasks/v1",
+    "",
+    "datascanner",
+    [
+      {
+        "type": "string",
+        "description": "ID of the data scanner",
+        "name": "X-Scanner-Id",
+        "in": "header",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "update_data_scanner_tasks",
+    "PATCH",
+    "/data-security-dspm/entities/scanner-tasks/v1",
+    "",
+    "datascanner",
+    [
+      {
+        "type": "string",
+        "description": "ID of the data scanner",
+        "name": "X-Scanner-Id",
+        "in": "header",
+        "required": True
+      },
+      {
+        "type": "string",
+        "description": "Provider ID of machine",
+        "name": "X-Machine-Id",
+        "in": "header",
+        "required": True
+      }
+    ]
+  ]
+]
diff --git a/src/falconpy/_endpoint/_delivery_settings.py b/src/falconpy/_endpoint/_delivery_settings.py
new file mode 100644
index 00000000..80b5de86
--- /dev/null
+++ b/src/falconpy/_endpoint/_delivery_settings.py
@@ -0,0 +1,62 @@
+"""Internal API endpoint constant library.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+_delivery_settings_endpoints = [
+  [
+    "GetDeliverySettings",
+    "GET",
+    "/delivery-settings/entities/delivery-settings/v1",
+    "Get Delivery Settings",
+    "delivery_settings",
+    []
+  ],
+  [
+    "PostDeliverySettings",
+    "POST",
+    "/delivery-settings/entities/delivery-settings/v1",
+    "Create Delivery Settings",
+    "delivery_settings",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ]
+]
diff --git a/src/falconpy/_endpoint/_discover.py b/src/falconpy/_endpoint/_discover.py
index fccbfc01..f6b82b0d 100644
--- a/src/falconpy/_endpoint/_discover.py
+++ b/src/falconpy/_endpoint/_discover.py
@@ -37,6 +37,173 @@
 """
 
 _discover_endpoints = [
+  [
+    "combined_applications",
+    "GET",
+    "/discover/combined/applications/v1",
+    "Search for applications in your environment by providing an FQL filter and paging details. Returns "
+    "details on applications which match the filter criteria.",
+    "discover",
+    [
+      {
+        "type": "string",
+        "description": "A pagination token used with the `limit` parameter to manage pagination of results. On "
+        " your first request, don't provide an `after` token. On subsequent requests, provide the `after` token from "
+        "the previous response to continue from that place in the results.",
+        "name": "after",
+        "in": "query"
+      },
+      {
+        "maximum": 1000,
+        "minimum": 1,
+        "type": "integer",
+        "description": "The number of application ids to return in this response (Min: 1, Max: 1000, Default: "
+        "100). Use with the `after` parameter to manage pagination of results.",
+        "name": "limit",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Sort applications by their properties. A single sort field is allowed.",
+        "name": "sort",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Search for applications in your environment by providing an FQL "
+        "filter.\n\t\t\t\tAvailable filter fields that support exact match: name, version, vendor, name_vendor, "
+        "name_vendor_version, first_seen_timestamp, installation_timestamp, architectures, installation_paths, "
+        "versioning_scheme, groups, is_normalized, last_used_user_sid, last_used_user_name, last_used_file_name, "
+        "last_used_file_hash, last_used_timestamp, last_updated_timestamp, is_suspicious, host.id, host.platform_name, "
+        "host.hostname, cid, host.os_version, host.machine_domain, host.ou, host.site_name, host.country, "
+        "host.current_mac_address, host.current_network_prefix, host.tags, host.groups, host.product_type_desc, "
+        "host.kernel_version, host.system_manufacturer, host.internet_exposure, host.agent_version, host.external_ip, "
+        "host.aid\n\t\t\t\tAvailable filter fields that supports wildcard (*): name, version, vendor, name_vendor, "
+        "name_vendor_version, architectures, installation_paths, groups, last_used_user_sid, last_used_user_name, "
+        "last_used_file_name, last_used_file_hash, host.platform_name, host.hostname, cid, host.os_version, "
+        "host.machine_domain, host.ou, host.site_name, host.country, host.current_mac_address, "
+        "host.current_network_prefix, host.tags, host.groups, host.product_type_desc, host.kernel_version, "
+        "host.system_manufacturer, host.internet_exposure, host.agent_version, host.external_ip, "
+        "host.aid\n\t\t\t\tAvailable filter fields that supports range comparisons (>, <, >=, <=): "
+        "first_seen_timestamp, installation_timestamp, last_used_timestamp, last_updated_timestamp\n\t\t\t\tAll filter "
+        "fields and operations supports negation (!).",
+        "name": "filter",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "Select various details blocks to be returned for each application entity. Supported "
+        "values:\n\n<ul><li>browser_extension</li><li>host_info</li><li>install_usage</li></ul>",
+        "name": "facet",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "combined_hosts",
+    "GET",
+    "/discover/combined/hosts/v1",
+    "Search for assets in your environment by providing an FQL (Falcon Query Language) filter and paging "
+    "details. Returns details on assets which match the filter criteria.",
+    "discover",
+    [
+      {
+        "type": "string",
+        "description": "A pagination token used with the `limit` parameter to manage pagination of results. On "
+        " your first request, don't provide an `after` token. On subsequent requests, provide the `after` token from "
+        "the previous response to continue from that place in the results.",
+        "name": "after",
+        "in": "query"
+      },
+      {
+        "maximum": 1000,
+        "minimum": 1,
+        "type": "integer",
+        "description": "The number of asset IDs to return in this response (min: 1, max: 1000, default: 100). "
+        "Use with the `after` parameter to manage pagination of results.",
+        "name": "limit",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Sort assets by their properties. A single sort field is allowed. Common sort options "
+        "include:\n\n<ul><li>hostname|asc</li><li>product_type_desc|desc</li></ul>",
+        "name": "sort",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Filter assets using an FQL query. Common filter options include:<ul><li>entity_type:'m "
+        "anaged'</li><li>product_type_desc:'Workstation'</li><li>platform_name:'Windows'</li><li>last_seen_timestamp:>' "
+        "now-7d'</li></ul>\n\t\t\tAvailable filter fields that support exact match: id, aid, entity_type, country, "
+        "city, platform_name, os_version, kernel_version, product_type_desc, tags, groups, agent_version, "
+        "system_product_name, system_manufacturer, system_serial_number, bios_manufacturer, bios_version, ou, "
+        "machine_domain, site_name, external_ip, hostname, local_ips_count, network_interfaces.local_ip, "
+        "network_interfaces.mac_address, network_interfaces.interface_alias, network_interfaces.interface_description, "
+        "network_interfaces.network_prefix, last_discoverer_aid, discoverer_count, discoverer_aids, discoverer_tags, "
+        "discoverer_platform_names, discoverer_product_type_descs, confidence, internet_exposure,  os_is_eol, "
+        "data_providers, data_providers_count, mac_addresses, local_ip_addresses, reduced_functionality_mode, "
+        "number_of_disk_drives, processor_package_count, physical_core_count, logical_core_count, total_disk_space, "
+        "disk_sizes.disk_name, disk_sizes.disk_space, cpu_processor_name, total_memory, encryption_status, "
+        "encrypted_drives, encrypted_drives_count, unencrypted_drives, unencrypted_drives_count, "
+        "os_security.secure_boot_requested_status, os_security.device_guard_status, os_security.device_guard_status, "
+        "os_security.device_guard_status, os_security.system_guard_status, os_security.credential_guard_status, "
+        "os_security.iommu_protection_status, os_security.secure_boot_enabled_status, "
+        "os_security.uefi_memory_protection_status, os_security.virtualization_based_security_status, "
+        "os_security.kernel_dma_protection_status, total_bios_files, bios_hashes_data.sha256_hash, "
+        "bios_hashes_data.measurement_type, bios_id, average_processor_usage, average_memory_usage, "
+        "average_memory_usage_pct, max_processor_usage, max_memory_usage, max_memory_usage_pct, used_disk_space, "
+        "used_disk_space_pct, available_disk_space, available_disk_space_pct, mount_storage_info.mount_path, "
+        "mount_storage_info.used_space, mount_storage_info.available_space, form_factor, servicenow_id, owned_by, "
+        "managed_by, assigned_to, department, fqdn, used_for, object_guid, object_sid, ad_user_account_control, "
+        "account_enabled, creation_timestamp, email, os_service_pack, location, state, cpu_manufacturer, "
+        "discovering_by\n\t\t\tAvailable filter fields that supports wildcard (*): id, aid, entity_type, country, city, "
+        " platform_name, os_version, kernel_version, product_type_desc, tags, groups, agent_version, "
+        "system_product_name, system_manufacturer, system_serial_number, bios_manufacturer, bios_version, ou, "
+        "machine_domain, site_name, external_ip, hostname, network_interfaces.local_ip, network_interfaces.mac_address, "
+        " network_interfaces.interface_alias, network_interfaces.interface_description, "
+        "network_interfaces.network_prefix, last_discoverer_aid, discoverer_aids, discoverer_tags, "
+        "discoverer_platform_names, discoverer_product_type_descs, confidence, internet_exposure,  os_is_eol, "
+        "data_providers, mac_addresses, local_ip_addresses, reduced_functionality_mode, disk_sizes.disk_name, "
+        "cpu_processor_name, encryption_status, encrypted_drives, unencrypted_drives, "
+        "os_security.secure_boot_requested_status, os_security.device_guard_status, os_security.device_guard_status, "
+        "os_security.device_guard_status, os_security.system_guard_status, os_security.credential_guard_status, "
+        "os_security.iommu_protection_status, os_security.secure_boot_enabled_status, "
+        "os_security.uefi_memory_protection_status, os_security.virtualization_based_security_status, "
+        "os_security.kernel_dma_protection_status, bios_hashes_data.sha256_hash, bios_hashes_data.measurement_type, "
+        "bios_id, mount_storage_info.mount_path, form_factor, servicenow_id, owned_by, managed_by, assigned_to, "
+        "department, fqdn, used_for, object_guid, object_sid, account_enabled, email, os_service_pack, location, state, "
+        " cpu_manufacturer, discovering_by\n\t\t\tAvailable filter fields that supports range comparisons (>, <, >=, "
+        "<=): first_seen_timestamp, last_seen_timestamp, local_ips_count, discoverer_count, confidence, "
+        "number_of_disk_drives, processor_package_count, physical_core_count, data_providers_count, logical_core_count, "
+        " total_disk_space, disk_sizes.disk_space, total_memory, encrypted_drives_count, unencrypted_drives_count, "
+        "total_bios_files, average_processor_usage, average_memory_usage, average_memory_usage_pct, "
+        "max_processor_usage, max_memory_usage, max_memory_usage_pct, used_disk_space, used_disk_space_pct, "
+        "available_disk_space, available_disk_space_pct, mount_storage_info.used_space, "
+        "mount_storage_info.available_space, ad_user_account_control, creation_timestamp\n\t\t\tAll filter fields and "
+        "operations supports negation (!).",
+        "name": "filter",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "Select various details blocks to be returned for each host entity. Supported "
+        "values:\n\n<ul><li>system_insights</li><li>third_party</li><li>risk_factors</li></ul>",
+        "name": "facet",
+        "in": "query"
+      }
+    ]
+  ],
   [
     "get_accounts",
     "GET",
diff --git a/src/falconpy/_endpoint/_downloads.py b/src/falconpy/_endpoint/_downloads.py
new file mode 100644
index 00000000..362d7e1d
--- /dev/null
+++ b/src/falconpy/_endpoint/_downloads.py
@@ -0,0 +1,90 @@
+"""Internal API endpoint constant library.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+_downloads_endpoints = [
+  [
+    "DownloadFile",
+    "GET",
+    "/csdownloads/entities/files/download/v1",
+    "Gets pre-signed URL for the file",
+    "downloads",
+    [
+      {
+        "type": "string",
+        "description": "Name of the file to be downloaded",
+        "name": "file_name",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "string",
+        "description": "Version of the file to be downloaded",
+        "name": "file_version",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "EnumerateFile",
+    "GET",
+    "/csdownloads/entities/files/enumerate/v1",
+    "Enumerates a list of files available for CID",
+    "downloads",
+    [
+      {
+        "type": "string",
+        "description": "Apply filtering on file name",
+        "name": "file_name",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Apply filtering on file platform",
+        "name": "platform",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Apply filtering on file category",
+        "name": "category",
+        "in": "query"
+      }
+    ]
+  ]
+]
diff --git a/src/falconpy/_endpoint/_drift_indicators.py b/src/falconpy/_endpoint/_drift_indicators.py
index a9484f3b..1663901b 100644
--- a/src/falconpy/_endpoint/_drift_indicators.py
+++ b/src/falconpy/_endpoint/_drift_indicators.py
@@ -112,6 +112,25 @@
       }
     ]
   ],
+  [
+    "ReadDriftIndicatorEntities",
+    "GET",
+    "/container-security/entities/drift-indicators/v1",
+    "Retrieve Drift Indicator entities identified by the provided IDs",
+    "drift_indicators",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "Search Drift Indicators by ids - The maximum amount is 100 IDs",
+        "name": "ids",
+        "in": "query"
+      }
+    ]
+  ],
   [
     "SearchDriftIndicators",
     "GET",
diff --git a/src/falconpy/_endpoint/_exposure_management.py b/src/falconpy/_endpoint/_exposure_management.py
index 8bbc6bb8..b2138052 100644
--- a/src/falconpy/_endpoint/_exposure_management.py
+++ b/src/falconpy/_endpoint/_exposure_management.py
@@ -134,6 +134,31 @@
       }
     ]
   ],
+  [
+    "delete_external_assets",
+    "DELETE",
+    "/fem/entities/external-assets/v1",
+    "Delete multiple external assets.",
+    "exposure_management",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "One or more asset IDs (max: 100).",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      },
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
   [
     "query_external_assets",
     "GET",
@@ -173,13 +198,13 @@
         "dns_domain.services.hosting_provider, dns_domain.services.last_seen, dns_domain.services.platform_name, "
         "dns_domain.services.port, dns_domain.services.protocol, dns_domain.services.protocol_port, "
         "dns_domain.services.status, dns_domain.services.status_code, dns_domain.services.transport, dns_domain.type, "
-        "first_seen, id, internet_exposure, ip.asn, ip.cloud_vm.description, ip.cloud_vm.instance_id, "
-        "ip.cloud_vm.lifecycle, ip.cloud_vm.mac_address, ip.cloud_vm.owner_id, ip.cloud_vm.platform, "
-        "ip.cloud_vm.private_ip, ip.cloud_vm.public_ip, ip.cloud_vm.region, ip.cloud_vm.security_groups, "
-        "ip.cloud_vm.source, ip.cloud_vm.status, ip.fqdns, ip.ip_address, ip.isp, ip.location.area_code, "
-        "ip.location.city, ip.location.country_code, ip.location.country_name, ip.location.postal_code, "
-        "ip.location.region_code, ip.location.region_name, ip.location.timezone, ip.ptr, ip.aid, "
-        "ip.services.applications.category, ip.services.applications.cpe, ip.services.applications.name, "
+        "first_seen, id, internet_exposure, ip.asn, ip.cloud_provider, ip.cloud_vm.description, "
+        "ip.cloud_vm.instance_id, ip.cloud_vm.lifecycle, ip.cloud_vm.mac_address, ip.cloud_vm.owner_id, "
+        "ip.cloud_vm.platform, ip.cloud_vm.private_ip, ip.cloud_vm.public_ip, ip.cloud_vm.region, "
+        "ip.cloud_vm.security_groups, ip.cloud_vm.source, ip.cloud_vm.status, ip.fqdns, ip.ip_address, ip.isp, "
+        "ip.location.area_code, ip.location.city, ip.location.country_code, ip.location.country_name, "
+        "ip.location.postal_code, ip.location.region_code, ip.location.region_name, ip.location.timezone, ip.ptr, "
+        "ip.aid, ip.services.applications.category, ip.services.applications.cpe, ip.services.applications.name, "
         "ip.services.applications.vendor, ip.services.applications.version, ip.services.cloud_provider, "
         "ip.services.cpes, ip.services.first_seen, ip.services.last_seen, ip.services.platform_name, ip.services.port, "
         "ip.services.protocol, ip.services.protocol_port, ip.services.status, ip.services.status_code, "
diff --git a/src/falconpy/_endpoint/_falconx_sandbox.py b/src/falconpy/_endpoint/_falconx_sandbox.py
index 148603ac..0e3b03f7 100644
--- a/src/falconpy/_endpoint/_falconx_sandbox.py
+++ b/src/falconpy/_endpoint/_falconx_sandbox.py
@@ -242,18 +242,24 @@
     "less than 15 minutes.",
     "falconx_sandbox",
     [
+      {
+        "type": "string",
+        "description": "Agent ID",
+        "name": "aid",
+        "in": "query"
+      },
       {
         "description": "Submit either a URL or a sample SHA256 for sandbox analysis. The sample file must have "
         " been previously uploaded through `/samples/entities/samples/v2`. You must specify a JSON object that includes "
         " the `falconx.SubmissionParametersV1` key/value pairs shown below.\n\n**`environment_id`**: Specifies the "
-        "sandbox environment used for analysis. Values:\n\n- `400`: MacOS Catalina 10.15\n- `300`: Linux Ubuntu 16.04, "
-        "64-bit\n- `200`: Android (static analysis)\n- `160`: Windows 10, 64-bit\n- `140`: Windows 11, 64-bit\n- `110`: "
-        " Windows 7, 64-bit\n- `100`: Windows 7, 32-bit\n\n**`sha256`** ID of the sample, which is a SHA256 hash value. "
-        " Find a sample ID from the response when uploading a malware sample or search with "
-        "`/falconx/queries/submissions/v1`.The `url` parameter must be unset if `sha256` is used.\n\n**`url`** A web "
-        "page or file URL. It can be HTTP(S) or FTP. The `sha256` parameter must be unset if `url` is "
-        "used.\n\n**`action_script`** (optional): Runtime script for sandbox analysis. Values:\n\n- `default`\n- "
-        "`default_maxantievasion`\n- `default_randomfiles`\n- `default_randomtheme`\n- "
+        "sandbox environment used for analysis. Values:\n\n- `400`: MacOS Catalina 10.15\n- `410`: MacOS Sonoma ARM 64 "
+        "bit\n- `300`: Linux Ubuntu 16.04, 64-bit\n- `200`: Android (static analysis)\n- `160`: Windows 10, 64-bit\n- "
+        "`140`: Windows 11, 64-bit\n- `110`: Windows 7, 64-bit\n- `100`: Windows 7, 32-bit\n\n**`sha256`** ID of the "
+        "sample, which is a SHA256 hash value. Find a sample ID from the response when uploading a malware sample or "
+        "search with `/falconx/queries/submissions/v1`.The `url` parameter must be unset if `sha256` is "
+        "used.\n\n**`url`** A web page or file URL. It can be HTTP(S) or FTP. The `sha256` parameter must be unset if "
+        "`url` is used.\n\n**`action_script`** (optional): Runtime script for sandbox analysis. Values:\n\n- "
+        "`default`\n- `default_maxantievasion`\n- `default_randomfiles`\n- `default_randomtheme`\n- "
         "`default_openie`\n\n**`command_line`** (optional): Command line script passed to the submitted file at "
         "runtime. Max length: 2048 characters\n\n**`document_password`** (optional): Auto-filled for Adobe or Office "
         "files that prompt for a password. Max length: 32 characters\n\n**`enable_tor`** (optional): Deprecated, please "
diff --git a/src/falconpy/_endpoint/_foundry_logscale.py b/src/falconpy/_endpoint/_foundry_logscale.py
index 0dde74f7..d96c3432 100644
--- a/src/falconpy/_endpoint/_foundry_logscale.py
+++ b/src/falconpy/_endpoint/_foundry_logscale.py
@@ -60,12 +60,17 @@
     "Asynchronously ingest data into the application repository",
     "foundry_logscale",
     [
+      {
+        "type": "string",
+        "description": "JSON data to ingest",
+        "name": "data_content",
+        "in": "formData"
+      },
       {
         "type": "file",
         "description": "Data file to ingest",
         "name": "data_file",
-        "in": "formData",
-        "required": True
+        "in": "formData"
       },
       {
         "type": "string",
@@ -104,12 +109,17 @@
     "Synchronously ingest data into the application repository",
     "foundry_logscale",
     [
+      {
+        "type": "string",
+        "description": "JSON data to ingest",
+        "name": "data_content",
+        "in": "formData"
+      },
       {
         "type": "file",
         "description": "Data file to ingest",
         "name": "data_file",
-        "in": "formData",
-        "required": True
+        "in": "formData"
       },
       {
         "type": "array",
@@ -227,6 +237,13 @@
         "name": "infer_json_types",
         "in": "query"
       },
+      {
+        "type": "boolean",
+        "default": False,
+        "description": "If set to true, result rows are dropped from the response and only the job status is returned",
+        "name": "job_status_only",
+        "in": "query"
+      },
       {
         "minimum": 0,
         "type": "string",
diff --git a/src/falconpy/_endpoint/_host_migration.py b/src/falconpy/_endpoint/_host_migration.py
index 7e9de151..a079a128 100644
--- a/src/falconpy/_endpoint/_host_migration.py
+++ b/src/falconpy/_endpoint/_host_migration.py
@@ -221,9 +221,12 @@
           "status|asc",
           "status|desc",
           "status",
-          "migration_id|asc",
-          "migration_id|desc",
-          "migration_id",
+          "target_cid|asc",
+          "target_cid|desc",
+          "target_cid",
+          "id|asc",
+          "id|desc",
+          "id",
           "created_time|asc",
           "created_time|desc",
           "created_time",
@@ -236,18 +239,15 @@
           "hostgroups|asc",
           "hostgroups|desc",
           "hostgroups",
-          "source_cid|asc",
-          "source_cid|desc",
-          "source_cid",
-          "id|asc",
-          "id|desc",
-          "id",
           "static_host_groups|asc",
           "static_host_groups|desc",
           "static_host_groups",
-          "target_cid|asc",
-          "target_cid|desc",
-          "target_cid"
+          "source_cid|asc",
+          "source_cid|desc",
+          "source_cid",
+          "migration_id|asc",
+          "migration_id|desc",
+          "migration_id"
         ],
         "type": "string",
         "description": "The property to sort by.",
@@ -257,8 +257,8 @@
       {
         "type": "string",
         "description": "The filter expression that should be used to limit the results. Valid fields: "
-        "host_migration_id, groups, hostgroups, hostname, status, migration_id, created_time, static_host_groups, "
-        "target_cid, source_cid, id",
+        "static_host_groups, source_cid, migration_id, groups, hostgroups, target_cid, id, created_time, "
+        "host_migration_id, hostname, status",
         "name": "filter",
         "in": "query"
       }
@@ -285,6 +285,15 @@
       },
       {
         "enum": [
+          "name|asc",
+          "name|desc",
+          "name",
+          "id|asc",
+          "id|desc",
+          "id",
+          "migration_id|asc",
+          "migration_id|desc",
+          "migration_id",
           "target_cid|asc",
           "target_cid|desc",
           "target_cid",
@@ -299,16 +308,7 @@
           "created_by",
           "created_time|asc",
           "created_time|desc",
-          "created_time",
-          "name|asc",
-          "name|desc",
-          "name",
-          "id|asc",
-          "id|desc",
-          "id",
-          "migration_id|asc",
-          "migration_id|desc",
-          "migration_id"
+          "created_time"
         ],
         "type": "string",
         "description": "The property to sort by.",
@@ -317,8 +317,8 @@
       },
       {
         "type": "string",
-        "description": "The filter expression that should be used to limit the results. Valid fields: "
-        "target_cid, status, migration_status, created_by, created_time, name, id, migration_id",
+        "description": "The filter expression that should be used to limit the results. Valid fields: status, "
+        "migration_status, created_by, created_time, name, id, migration_id, target_cid",
         "name": "filter",
         "in": "query"
       }
diff --git a/src/falconpy/_endpoint/_hosts.py b/src/falconpy/_endpoint/_hosts.py
index a84db732..b1b462ed 100644
--- a/src/falconpy/_endpoint/_hosts.py
+++ b/src/falconpy/_endpoint/_hosts.py
@@ -304,13 +304,14 @@
     [
       {
         "type": "string",
-        "description": "The offset to page from, for the next result set",
+        "description": "The offset to page from, provided from the previous scroll call, for the next result "
+        "set. For the first call, do not supply an offset.",
         "name": "offset",
         "in": "query"
       },
       {
         "type": "integer",
-        "description": "The maximum records to return. [1-5000]",
+        "description": "The maximum records to return. [1-10000]",
         "name": "limit",
         "in": "query"
       },
diff --git a/src/falconpy/_endpoint/_identity_protection.py b/src/falconpy/_endpoint/_identity_protection.py
index ddec887f..d2132e76 100644
--- a/src/falconpy/_endpoint/_identity_protection.py
+++ b/src/falconpy/_endpoint/_identity_protection.py
@@ -52,7 +52,7 @@
     ]
   ],
   [
-    "api_preempt_proxy_post_graphql",
+    "post_graphql",
     "POST",
     "/identity-protection/combined/graphql/v1",
     "Identity Protection GraphQL API. Allows to retrieve entities, timeline activities, identity-based "
@@ -82,6 +82,87 @@
       }
     ]
   ],
+  [
+    "get_policy_rules",
+    "GET",
+    "/identity-protection/entities/policy-rules/v1",
+    "Get policy rules",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "maxItems": 100,
+        "minItems": 1,
+        "uniqueItems": True,
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "Rule IDs",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "post_policy_rules",
+    "POST",
+    "/identity-protection/entities/policy-rules/v1",
+    "Create policy rule",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "delete_policy_rules",
+    "DELETE",
+    "/identity-protection/entities/policy-rules/v1",
+    "Delete policy rules",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "maxItems": 100,
+        "minItems": 1,
+        "uniqueItems": True,
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "Rule IDs",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
   [
     "QuerySensorsByFilter",
     "GET",
@@ -114,5 +195,39 @@
         "in": "query"
       }
     ]
+  ],
+  [
+    "get_policy_rules_query",
+    "GET",
+    "/identity-protection/queries/policy-rules/v1",
+    "Query policy rule IDs",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "type": "boolean",
+        "description": "Whether the rule is enabled",
+        "name": "enabled",
+        "in": "query"
+      },
+      {
+        "type": "boolean",
+        "description": "Whether the rule is in simulation mode",
+        "name": "simulation_mode",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Rule name",
+        "name": "name",
+        "in": "query"
+      }
+    ]
   ]
 ]
diff --git a/src/falconpy/_endpoint/_ioa_exclusions.py b/src/falconpy/_endpoint/_ioa_exclusions.py
index a8a0aebf..1bb2e8ee 100644
--- a/src/falconpy/_endpoint/_ioa_exclusions.py
+++ b/src/falconpy/_endpoint/_ioa_exclusions.py
@@ -120,10 +120,25 @@
     [
       {
         "type": "string",
-        "description": "The filter expression that should be used to limit the results.",
+        "description": "The filter expression that should be used to limit the results. Filtered queries "
+        "involving regex fields should specify their expressions in the `ifn_regex` and `cl_regex` parameters.",
         "name": "filter",
         "in": "query"
       },
+      {
+        "type": "string",
+        "description": "The `ifn_regex` expression to filter exclusions by, used alongside expressions "
+        "specified in the filter query parameter.",
+        "name": "ifn_regex",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "The `cl_regex` expression to filter exclusions by, used alongside expressions "
+        "specified in the filter query parameter.",
+        "name": "cl_regex",
+        "in": "query"
+      },
       {
         "type": "integer",
         "description": "The offset to start retrieving records from",
diff --git a/src/falconpy/_endpoint/_kubernetes_protection.py b/src/falconpy/_endpoint/_kubernetes_protection.py
index 3681a1f1..3038f1cb 100644
--- a/src/falconpy/_endpoint/_kubernetes_protection.py
+++ b/src/falconpy/_endpoint/_kubernetes_protection.py
@@ -56,9 +56,9 @@
       {
         "type": "string",
         "description": "Retrieve count of Kubernetes clusters that match a query in Falcon Query Language "
-        "(FQL). Supported filters:  access,agent_status,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster"
-        "_name,cluster_status,container_count,iar_coverage,kubernetes_version,last_seen, management_status, node_count,"
-        "pod_count, tags",
+        "(FQL). Supported filters:  access,agent_id,agent_status,agent_type,cid,cloud_account_id,cloud_name,cloud_regio"
+        "n,cloud_service,cluster_id,cluster_name,cluster_status,container_count,iar_coverage,kac_agent_id,kubernetes_ve"
+        "rsion,last_seen, management_status, node_count, pod_count, tags",
         "name": "filter",
         "in": "query"
       }
@@ -74,9 +74,9 @@
       {
         "type": "string",
         "description": "Retrieve count of Kubernetes clusters that match a query in Falcon Query Language "
-        "(FQL). Supported filters:  access,agent_status,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster"
-        "_name,cluster_status,container_count,iar_coverage,kubernetes_version,last_seen, management_status, node_count,"
-        "pod_count, tags",
+        "(FQL). Supported filters:  access,agent_id,agent_status,agent_type,cid,cloud_account_id,cloud_name,cloud_regio"
+        "n,cloud_service,cluster_id,cluster_name,cluster_status,container_count,iar_coverage,kac_agent_id,kubernetes_ve"
+        "rsion,last_seen, management_status, node_count, pod_count, tags",
         "name": "filter",
         "in": "query"
       }
@@ -92,9 +92,9 @@
       {
         "type": "string",
         "description": "Retrieve count of Kubernetes clusters that match a query in Falcon Query Language "
-        "(FQL). Supported filters:  access,agent_status,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster"
-        "_name,cluster_status,container_count,iar_coverage,kubernetes_version,last_seen, management_status, node_count,"
-        "pod_count, tags",
+        "(FQL). Supported filters:  access,agent_id,agent_status,agent_type,cid,cloud_account_id,cloud_name,cloud_regio"
+        "n,cloud_service,cluster_id,cluster_name,cluster_status,container_count,iar_coverage,kac_agent_id,kubernetes_ve"
+        "rsion,last_seen, management_status, node_count, pod_count, tags",
         "name": "filter",
         "in": "query"
       }
@@ -110,12 +110,12 @@
       {
         "type": "string",
         "description": "Get container counts using a query in Falcon Query Language (FQL). Supported filters:"
-        "  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,clust"
-        "er_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_count,image_digest,image_"
-        "has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerability_count,insecure_mount_"
-        "source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,labels,last_seen,namespace,nod"
-        "e_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_a"
-        "s_root_user,running_status",
+        "  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,cloud_region,cloud_service,cl"
+        "uster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection_name,first_seen,image_de"
+        "tection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vu"
+        "lnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ip"
+        "v6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privil"
+        "eged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -162,11 +162,11 @@
         "type": "string",
         "description": "Retrieve count of Kubernetes containers that match a query in Falcon Query Language "
         "(FQL). Supported filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,clou"
-        "d_region,cluster_id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_"
-        "count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerabil"
-        "ity_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,label"
-        "s,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_acces"
-        "s,run_as_root_group,run_as_root_user,running_status",
+        "d_region,cloud_service,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection"
+        "_name,first_seen,image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repo"
+        "sitory,image_tag,image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode"
+        ",interactive_mode,ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,po"
+        "d_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -183,11 +183,11 @@
         "type": "string",
         "description": "Retrieve count of Kubernetes containers that match a query in Falcon Query Language "
         "(FQL). Supported filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,clou"
-        "d_region,cluster_id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_"
-        "count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerabil"
-        "ity_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,label"
-        "s,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_acces"
-        "s,run_as_root_group,run_as_root_user,running_status",
+        "d_region,cloud_service,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection"
+        "_name,first_seen,image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repo"
+        "sitory,image_tag,image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode"
+        ",interactive_mode,ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,po"
+        "d_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -222,11 +222,11 @@
         "type": "string",
         "description": "Retrieve count of Kubernetes containers that match a query in Falcon Query Language "
         "(FQL). Supported filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,clou"
-        "d_region,cluster_id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_"
-        "count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerabil"
-        "ity_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,label"
-        "s,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_acces"
-        "s,run_as_root_group,run_as_root_user,running_status",
+        "d_region,cloud_service,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection"
+        "_name,first_seen,image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repo"
+        "sitory,image_tag,image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode"
+        ",interactive_mode,ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,po"
+        "d_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -243,11 +243,11 @@
         "type": "string",
         "description": "Retrieve count of Kubernetes containers that match a query in Falcon Query Language "
         "(FQL). Supported filters:  agent_id,allow_privilege_escalation,cid,cloud_account_id,cloud_name,cloud_region,cl"
-        "uster_id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_count,image"
-        "_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerability_count,i"
-        "nsecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,labels,last_seen"
-        ",namespace,node_name,node_uid,pod_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root_"
-        "user,running_status",
+        "oud_service,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection_name,first"
+        "_seen,image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,imag"
+        "e_tag,image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactiv"
+        "e_mode,ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,pod_id,pod_name,port,privileged,ro"
+        "ot_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -264,11 +264,11 @@
         "type": "string",
         "description": "Retrieve count of Kubernetes containers that match a query in Falcon Query Language "
         "(FQL). Supported filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,clou"
-        "d_region,cluster_id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_"
-        "count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerabil"
-        "ity_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,label"
-        "s,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_acces"
-        "s,run_as_root_group,run_as_root_user,running_status",
+        "d_region,cloud_service,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection"
+        "_name,first_seen,image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repo"
+        "sitory,image_tag,image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode"
+        ",interactive_mode,ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,po"
+        "d_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -300,11 +300,11 @@
         "type": "string",
         "description": "Retrieve count of Kubernetes containers that match a query in Falcon Query Language "
         "(FQL). Supported filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,clou"
-        "d_region,cluster_id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_"
-        "count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerabil"
-        "ity_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,label"
-        "s,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_acces"
-        "s,run_as_root_group,run_as_root_user,running_status",
+        "d_region,cloud_service,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection"
+        "_name,first_seen,image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repo"
+        "sitory,image_tag,image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode"
+        ",interactive_mode,ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,po"
+        "d_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -321,11 +321,11 @@
         "type": "string",
         "description": "Get vulnerabilities count by severity for container using a query in Falcon Query "
         "Language (FQL). Supported filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_"
-        "name,cloud_region,cluster_id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_d"
-        "etection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_v"
-        "ulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,i"
-        "pv6,labels,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_wr"
-        "ite_access,run_as_root_group,run_as_root_user,running_status",
+        "name,cloud_region,cloud_service,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,"
+        "detection_name,first_seen,image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,i"
+        "mage_repository,image_tag,image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propaga"
+        "tion_mode,interactive_mode,ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_v"
+        "ersion,pod_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -349,8 +349,9 @@
       {
         "type": "string",
         "description": "Retrieve count of Kubernetes deployments that match a query in Falcon Query Language "
-        "(FQL). Supported filters:  annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster_na"
-        "me,deployment_id,deployment_name,first_seen,last_seen,namespace,pod_count",
+        "(FQL). Supported filters:  agent_id,agent_type,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,c"
+        "loud_service,cluster_id,cluster_name,deployment_id,deployment_name,deployment_status,first_seen,kac_agent_id,l"
+        "ast_seen,namespace,pod_count,resource_status",
         "name": "filter",
         "in": "query"
       }
@@ -382,6 +383,58 @@
       }
     ]
   ],
+  [
+    "ReadContainerEnrichment",
+    "GET",
+    "/container-security/aggregates/enrichment/containers/entities/v1",
+    "Retrieve container enrichment data",
+    "kubernetes_protection",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "One or more container ids for which to retrieve enrichment info",
+        "name": "container_id",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "string",
+        "description": "Supported filters:  last_seen",
+        "name": "filter",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "ReadDeploymentEnrichment",
+    "GET",
+    "/container-security/aggregates/enrichment/deployments/entities/v1",
+    "Retrieve deployment enrichment data",
+    "kubernetes_protection",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "One or more deployment ids for which to retrieve enrichment info",
+        "name": "deployment_id",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "string",
+        "description": "Supported filters:  last_seen",
+        "name": "filter",
+        "in": "query"
+      }
+    ]
+  ],
   [
     "ReadNodeEnrichment",
     "GET",
@@ -408,6 +461,32 @@
       }
     ]
   ],
+  [
+    "ReadPodEnrichment",
+    "GET",
+    "/container-security/aggregates/enrichment/pods/entities/v1",
+    "Retrieve pod enrichment data",
+    "kubernetes_protection",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "One or more pod ids for which to retrieve enrichment info",
+        "name": "pod_id",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "string",
+        "description": "Supported filters:  last_seen",
+        "name": "filter",
+        "in": "query"
+      }
+    ]
+  ],
   [
     "ReadDistinctContainerImageCount",
     "GET",
@@ -418,12 +497,12 @@
       {
         "type": "string",
         "description": "Search Kubernetes containers using a query in Falcon Query Language (FQL). Supported "
-        "filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,cloud_region,cluster_"
-        "id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_count,image_diges"
-        "t,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerability_count,insecur"
-        "e_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,labels,last_seen,names"
-        "pace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_access,run_as_root_gro"
-        "up,run_as_root_user,running_status",
+        "filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,cloud_region,cloud_se"
+        "rvice,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection_name,first_seen,"
+        "image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,"
+        "image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode"
+        ",ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,por"
+        "t,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -440,11 +519,11 @@
         "type": "string",
         "description": "Retrieve count of Kubernetes containers that match a query in Falcon Query Language "
         "(FQL). Supported filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,clou"
-        "d_region,cluster_id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_"
-        "count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerabil"
-        "ity_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,label"
-        "s,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_acces"
-        "s,run_as_root_group,run_as_root_user,running_status",
+        "d_region,cloud_service,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection"
+        "_name,first_seen,image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repo"
+        "sitory,image_tag,image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode"
+        ",interactive_mode,ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,po"
+        "d_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       }
@@ -482,6 +561,32 @@
       }
     ]
   ],
+  [
+    "ReadNamespacesByDateRangeCount",
+    "GET",
+    "/container-security/aggregates/namespaces/count-by-date/v1",
+    "Retrieve namespaces by date range counts",
+    "kubernetes_protection",
+    []
+  ],
+  [
+    "ReadNamespaceCount",
+    "GET",
+    "/container-security/aggregates/namespaces/count/v1",
+    "Retrieve namespace counts",
+    "kubernetes_protection",
+    [
+      {
+        "type": "string",
+        "description": "Retrieve count of Kubernetes namespaces that match a query in Falcon Query Language "
+        "(FQL). Supported filters:  agent_id,agent_type,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,c"
+        "loud_service,cluster_id,cluster_name,first_seen,kac_agent_id,last_seen,namespace_id,namespace_name,resource_st"
+        "atus",
+        "name": "filter",
+        "in": "query"
+      }
+    ]
+  ],
   [
     "ReadNodesByCloudCount",
     "GET",
@@ -492,9 +597,9 @@
       {
         "type": "string",
         "description": "Search Kubernetes nodes using a query in Falcon Query Language (FQL). Supported "
-        "filters:  aid,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster_name,container_"
-        "count,container_runtime_version,first_seen,image_digest,ipv4,last_seen,linux_sensor_coverage,node_name,pod_cou"
-        "nt",
+        "filters:  agent_id,agent_type,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cloud_service,clus"
+        "ter_id,cluster_name,container_count,container_runtime_version,first_seen,image_digest,ipv4,kac_agent_id,last_s"
+        "een,linux_sensor_coverage,node_name,pod_count,resource_status",
         "name": "filter",
         "in": "query"
       }
@@ -510,9 +615,9 @@
       {
         "type": "string",
         "description": "Search Kubernetes nodes using a query in Falcon Query Language (FQL). Supported "
-        "filters:  aid,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster_name,container_"
-        "count,container_runtime_version,first_seen,image_digest,ipv4,last_seen,linux_sensor_coverage,node_name,pod_cou"
-        "nt",
+        "filters:  agent_id,agent_type,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cloud_service,clus"
+        "ter_id,cluster_name,container_count,container_runtime_version,first_seen,image_digest,ipv4,kac_agent_id,last_s"
+        "een,linux_sensor_coverage,node_name,pod_count,resource_status",
         "name": "filter",
         "in": "query"
       }
@@ -528,9 +633,9 @@
       {
         "type": "string",
         "description": "Search Kubernetes nodes using a query in Falcon Query Language (FQL). Supported "
-        "filters:  aid,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster_name,container_"
-        "count,container_runtime_version,first_seen,image_digest,ipv4,last_seen,linux_sensor_coverage,node_name,pod_cou"
-        "nt",
+        "filters:  agent_id,agent_type,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cloud_service,clus"
+        "ter_id,cluster_name,container_count,container_runtime_version,first_seen,image_digest,ipv4,kac_agent_id,last_s"
+        "een,linux_sensor_coverage,node_name,pod_count,resource_status",
         "name": "filter",
         "in": "query"
       }
@@ -546,9 +651,9 @@
       {
         "type": "string",
         "description": "Retrieve count of Kubernetes nodes that match a query in Falcon Query Language (FQL). "
-        "Supported filters:  aid,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster_name,"
-        "container_count,container_runtime_version,first_seen,image_digest,ipv4,last_seen,linux_sensor_coverage,node_na"
-        "me,pod_count",
+        "Supported filters:  agent_id,agent_type,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cloud_se"
+        "rvice,cluster_id,cluster_name,container_count,container_runtime_version,first_seen,image_digest,ipv4,kac_agent"
+        "_id,last_seen,linux_sensor_coverage,node_name,pod_count,resource_status",
         "name": "filter",
         "in": "query"
       }
@@ -573,9 +678,9 @@
         "type": "string",
         "description": "Retrieve count of Kubernetes pods that match a query in Falcon Query Language (FQL). "
         "Supported filters:  agent_id,agent_type,allow_privilege_escalation,annotations_list,cid,cloud_account_id,cloud"
-        "_name,cloud_region,cluster_id,cluster_name,container_count,ipv4,ipv6,labels,last_seen,namespace,node_name,node"
-        "_uid,owner_id,owner_type,pod_external_id,pod_id,pod_name,port,privileged,root_write_access,run_as_root_group,r"
-        "un_as_root_user",
+        "_name,cloud_region,cloud_service,cluster_id,cluster_name,container_count,first_seen,ipv4,ipv6,kac_agent_id,lab"
+        "els,last_seen,namespace,node_name,node_uid,owner_id,owner_type,pod_external_id,pod_id,pod_name,port,privileged"
+        ",resource_status,root_write_access,run_as_root_group,run_as_root_user",
         "name": "filter",
         "in": "query"
       }
@@ -591,9 +696,9 @@
       {
         "type": "string",
         "description": "Search Kubernetes clusters using a query in Falcon Query Language (FQL). Supported "
-        "filters:  access,agent_status,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster_name,cluster_sta"
-        "tus,container_count,iar_coverage,kubernetes_version,last_seen, management_status, node_count, pod_count, "
-        "tags",
+        "filters:  access,agent_id,agent_status,agent_type,cid,cloud_account_id,cloud_name,cloud_region,cloud_service,c"
+        "luster_id,cluster_name,cluster_status,container_count,iar_coverage,kac_agent_id,kubernetes_version,last_seen, "
+        "management_status, node_count, pod_count, tags",
         "name": "filter",
         "in": "query"
       },
@@ -662,12 +767,12 @@
       {
         "type": "string",
         "description": "Search Kubernetes containers using a query in Falcon Query Language (FQL). Supported "
-        "filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,cloud_region,cluster_"
-        "id,cluster_name,container_id,container_name,cve_id,detection_name,first_seen,image_detection_count,image_diges"
-        "t,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,image_vulnerability_count,insecur"
-        "e_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode,ipv4,ipv6,labels,last_seen,names"
-        "pace,node_name,node_uid,package_name_version,pod_id,pod_name,port,privileged,root_write_access,run_as_root_gro"
-        "up,run_as_root_user,running_status",
+        "filters:  agent_id,agent_type,allow_privilege_escalation,cid,cloud_account_id,cloud_name,cloud_region,cloud_se"
+        "rvice,cluster_id,cluster_name,container_id,container_image_id,container_name,cve_id,detection_name,first_seen,"
+        "image_detection_count,image_digest,image_has_been_assessed,image_id,image_registry,image_repository,image_tag,"
+        "image_vulnerability_count,insecure_mount_source,insecure_mount_type,insecure_propagation_mode,interactive_mode"
+        ",ipv4,ipv6,kac_agent_id,labels,last_seen,namespace,node_name,node_uid,package_name_version,pod_id,pod_name,por"
+        "t,privileged,root_write_access,run_as_root_group,run_as_root_user,running_status",
         "name": "filter",
         "in": "query"
       },
@@ -701,8 +806,9 @@
       {
         "type": "string",
         "description": "Search Kubernetes deployments using a query in Falcon Query Language (FQL). Supported "
-        "filters:  annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster_name,deployment_id,"
-        "deployment_name,first_seen,last_seen,namespace,pod_count",
+        "filters:  agent_id,agent_type,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cloud_service,clus"
+        "ter_id,cluster_name,deployment_id,deployment_name,deployment_status,first_seen,kac_agent_id,last_seen,namespac"
+        "e,pod_count,resource_status",
         "name": "filter",
         "in": "query"
       },
@@ -771,9 +877,9 @@
       {
         "type": "string",
         "description": "Search Kubernetes nodes using a query in Falcon Query Language (FQL). Supported "
-        "filters:  aid,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cluster_id,cluster_name,container_"
-        "count,container_runtime_version,first_seen,image_digest,ipv4,last_seen,linux_sensor_coverage,node_name,pod_cou"
-        "nt",
+        "filters:  agent_id,agent_type,annotations_list,cid,cloud_account_id,cloud_name,cloud_region,cloud_service,clus"
+        "ter_id,cluster_name,container_count,container_runtime_version,first_seen,image_digest,ipv4,kac_agent_id,last_s"
+        "een,linux_sensor_coverage,node_name,pod_count,resource_status",
         "name": "filter",
         "in": "query"
       },
@@ -808,9 +914,9 @@
         "type": "string",
         "description": "Search Kubernetes pods using a query in Falcon Query Language (FQL). Supported "
         "filters:  agent_id,agent_type,allow_privilege_escalation,annotations_list,cid,cloud_account_id,cloud_name,clou"
-        "d_region,cluster_id,cluster_name,container_count,ipv4,ipv6,labels,last_seen,namespace,node_name,node_uid,owner"
-        "_id,owner_type,pod_external_id,pod_id,pod_name,port,privileged,root_write_access,run_as_root_group,run_as_root"
-        "_user",
+        "d_region,cloud_service,cluster_id,cluster_name,container_count,first_seen,ipv4,ipv6,kac_agent_id,labels,last_s"
+        "een,namespace,node_name,node_uid,owner_id,owner_type,pod_external_id,pod_id,pod_name,port,privileged,resource_"
+        "status,root_write_access,run_as_root_group,run_as_root_user",
         "name": "filter",
         "in": "query"
       },
diff --git a/src/falconpy/_endpoint/_message_center.py b/src/falconpy/_endpoint/_message_center.py
index d7da5101..252beb31 100644
--- a/src/falconpy/_endpoint/_message_center.py
+++ b/src/falconpy/_endpoint/_message_center.py
@@ -242,8 +242,8 @@
       },
       {
         "enum": [
-          "case.type.asc",
-          "case.type.desc"
+          "case.created_time.asc",
+          "case.created_time.desc"
         ],
         "type": "string",
         "description": "The property to sort on, followed by a dot (.), followed by the sort direction, either "
diff --git a/src/falconpy/_endpoint/_quick_scan_pro.py b/src/falconpy/_endpoint/_quick_scan_pro.py
new file mode 100644
index 00000000..7e89fcf6
--- /dev/null
+++ b/src/falconpy/_endpoint/_quick_scan_pro.py
@@ -0,0 +1,172 @@
+"""Internal API endpoint constant library.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+_quick_scan_pro_endpoints = [
+  [
+    "UploadFileMixin0Mixin94",
+    "POST",
+    "/quickscanpro/entities/files/v1",
+    "Uploads a file to be further analyzed with QuickScan Pro. The samples expire after 90 days.",
+    "quick_scan_pro",
+    [
+      {
+        "type": "file",
+        "description": "Binary file to be uploaded. Max file size: 256 MB.",
+        "name": "file",
+        "in": "formData",
+        "required": True
+      },
+      {
+        "type": "boolean",
+        "default": False,
+        "description": "If true, after upload, it starts scanning immediately. Default scan mode is 'false'",
+        "name": "scan",
+        "in": "formData"
+      }
+    ]
+  ],
+  [
+    "DeleteFile",
+    "DELETE",
+    "/quickscanpro/entities/files/v1",
+    "Deletes file by its sha256 identifier.",
+    "quick_scan_pro",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "File's SHA256",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "GetScanResult",
+    "GET",
+    "/quickscanpro/entities/scans/v1",
+    "Gets the result of an QuickScan Pro scan.",
+    "quick_scan_pro",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "Scan job IDs previously created by LaunchScan",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "LaunchScan",
+    "POST",
+    "/quickscanpro/entities/scans/v1",
+    "Starts scanning a file uploaded through '/quickscanpro/entities/files/v1'.",
+    "quick_scan_pro",
+    [
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "DeleteScanResult",
+    "DELETE",
+    "/quickscanpro/entities/scans/v1",
+    "Deletes the result of an QuickScan Pro scan.",
+    "quick_scan_pro",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "Scan job IDs previously created by LaunchScan",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "QueryScanResults",
+    "GET",
+    "/quickscanpro/queries/scans/v1",
+    "Gets QuickScan Pro scan jobs for a given FQL filter.",
+    "quick_scan_pro",
+    [
+      {
+        "type": "string",
+        "description": "FQL query which mentions the SHA256 field",
+        "name": "filter",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "integer",
+        "description": "The offset to start retrieving ids from.",
+        "name": "offset",
+        "in": "query"
+      },
+      {
+        "type": "integer",
+        "default": 50,
+        "description": "Maximum number of IDs to return. Max: 5000.",
+        "name": "limit",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Sort order: `asc` or `desc`. Sort supported fields `created_timestamp`",
+        "name": "sort",
+        "in": "query"
+      }
+    ]
+  ]
+]
diff --git a/src/falconpy/_endpoint/_recon.py b/src/falconpy/_endpoint/_recon.py
index 8aaa70f2..b08c7289 100644
--- a/src/falconpy/_endpoint/_recon.py
+++ b/src/falconpy/_endpoint/_recon.py
@@ -221,9 +221,8 @@
     "GetNotificationsDetailedTranslatedV1",
     "GET",
     "/recon/entities/notifications-detailed-translated/v1",
-    "Get detailed notifications based on their IDs. These include the raw intelligence content that generated "
-    "the match.This endpoint will return translated notification content. The only target language available is "
-    "English. A single notification can be translated per request",
+    "Get detailed notifications based on their IDs. These include the translated raw intelligence content that "
+    "generated the match or part of it. ",
     "recon",
     [
       {
@@ -243,7 +242,8 @@
     "GetNotificationsDetailedV1",
     "GET",
     "/recon/entities/notifications-detailed/v1",
-    "Get detailed notifications based on their IDs. These include the raw intelligence content that generated the match.",
+    "Get detailed notifications based on their IDs. These include the raw intelligence content that generated "
+    "the match or part of it. ",
     "recon",
     [
       {
@@ -619,6 +619,13 @@
         "description": "Free text search across all indexed fields.",
         "name": "q",
         "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Possible order by fields: created_timestamp, last_updated_timestamp. Ex: "
+        "`last_updated_timestamp|desc`.",
+        "name": "secondarySort",
+        "in": "query"
       }
     ]
   ]
diff --git a/src/falconpy/_endpoint/_sensor_usage.py b/src/falconpy/_endpoint/_sensor_usage.py
new file mode 100644
index 00000000..e8c35a0c
--- /dev/null
+++ b/src/falconpy/_endpoint/_sensor_usage.py
@@ -0,0 +1,62 @@
+"""Internal API endpoint constant library.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+_sensor_usage_endpoints = [
+  [
+    "GetSensorUsageWeekly",
+    "GET",
+    "/billing-dashboards-usage/aggregates/weekly-average/v1",
+    "Fetches weekly average. Each data point represents the average of how many unique AIDs were seen per week "
+    "for the previous 28 days.",
+    "sensor_usage",
+    [
+      {
+        "type": "string",
+        "description": "The FQL search filter. Allowed fields:\n\"event_date\" : A specified date that will be "
+        " final date of the results returned. Specified date cannot be after the default.\n\tFormat: "
+        "'2024-06-11'\n\tDefault: the current date, minus 2 days, in UTC\n\"period\" : An integer surrounded by single "
+        "quotes representing the number of days to return.\n\tFormat: '30'\n\tDefault: '28'\n\tMinimum: '1'\n\tMaximum: "
+        " '395'\n\"selected_cids\" : A comma separated list of CIDs to return data for. Caller must be a parent CID or "
+        "have special access enabled.\n\tFormat: 'cid_1,cid_2,cid_3'\n\tDefault: for parent CIDs the default is the "
+        "parent and all children, otherwise the current CID",
+        "name": "filter",
+        "in": "query"
+      }
+    ]
+  ]
+]
diff --git a/src/falconpy/_endpoint/_threatgraph.py b/src/falconpy/_endpoint/_threatgraph.py
index 7d9a119f..7d725773 100644
--- a/src/falconpy/_endpoint/_threatgraph.py
+++ b/src/falconpy/_endpoint/_threatgraph.py
@@ -301,6 +301,7 @@
           "presented_by_cloud",
           "primary_module",
           "primary_module_of_process",
+          "protected_by_shield",
           "quarantined_file",
           "queried_by_process",
           "queried_by_sensor",
@@ -323,6 +324,7 @@
           "set_firewall_rule",
           "set_rule",
           "shell_io_redirect",
+          "shield_activated_on_host",
           "suspicious_dns_request",
           "trigger_process",
           "triggered_by_control_graph",
@@ -535,6 +537,8 @@
           "sensor",
           "sensor-self-diagnostics",
           "sensor_self_diagnostic",
+          "shield",
+          "shields",
           "tag",
           "tags",
           "user-sessions",
@@ -547,7 +551,7 @@
         ],
         "type": "string",
         "description": "Type of vertex to get properties for",
-        "name": "vertex-type",
+        "name": "vertex_type",
         "in": "path",
         "required": True
       },
@@ -590,7 +594,9 @@
     "entities_vertices_get",
     "GET",
     "/threatgraph/entities/{}/v1",
-    "Retrieve metadata for a given vertex ID",
+    "Retrieve metadata for a given vertex ID. Note: This is a legacy endpoint used by CrowdStrike Store "
+    "partners prior to release of the ThreatGraph OAuth 2.0 APIs. If you’re not currently using this endpoint, use "
+    "the /v2 endpoint instead.",
     "threatgraph",
     [
       {
@@ -685,6 +691,8 @@
           "sensor",
           "sensor-self-diagnostics",
           "sensor_self_diagnostic",
+          "shield",
+          "shields",
           "tag",
           "tags",
           "user-sessions",
@@ -697,7 +705,7 @@
         ],
         "type": "string",
         "description": "Type of vertex to get properties for",
-        "name": "vertex-type",
+        "name": "vertex_type",
         "in": "path",
         "required": True
       },
@@ -835,6 +843,8 @@
           "sensor",
           "sensor-self-diagnostics",
           "sensor_self_diagnostic",
+          "shield",
+          "shields",
           "tag",
           "tags",
           "user-sessions",
@@ -847,7 +857,7 @@
         ],
         "type": "string",
         "description": "Type of vertex to get properties for",
-        "name": "vertex-type",
+        "name": "vertex_type",
         "in": "path",
         "required": True
       },
diff --git a/src/falconpy/_endpoint/deprecated/__init__.py b/src/falconpy/_endpoint/deprecated/__init__.py
index 5bd72ac1..35af4477 100644
--- a/src/falconpy/_endpoint/deprecated/__init__.py
+++ b/src/falconpy/_endpoint/deprecated/__init__.py
@@ -33,6 +33,7 @@
 # the service classes.
 from ._custom_ioa import _custom_ioa_endpoints
 from ._d4c_registration import _d4c_registration_endpoints
+from ._datascanner import _datascanner_endpoints
 from ._discover import _discover_endpoints
 from ._exposure_management import _exposure_management_endpoints
 from ._fdr import _fdr_endpoints
@@ -53,6 +54,7 @@
 
 _custom_ioa_deprecated = _custom_ioa_endpoints
 _d4c_registration_deprecated = _d4c_registration_endpoints
+_datascanner_deprecated = _datascanner_endpoints
 _discover_deprecated = _discover_endpoints
 _exposure_management_deprecated = _exposure_management_endpoints
 _fdr_deprecated = _fdr_endpoints
diff --git a/src/falconpy/_endpoint/deprecated/_custom_ioa.py b/src/falconpy/_endpoint/deprecated/_custom_ioa.py
index b5449b99..0d1927bb 100644
--- a/src/falconpy/_endpoint/deprecated/_custom_ioa.py
+++ b/src/falconpy/_endpoint/deprecated/_custom_ioa.py
@@ -344,7 +344,7 @@
           "name"
         ],
         "type": "string",
-        "description": "Possible order by fields: {enabled, name, created_by, created_on, modified_by, modified_on}",
+        "description": "Possible order by fields: {created_by, created_on, enabled, modified_by, modified_on, name}",
         "name": "sort",
         "in": "query"
       },
@@ -394,7 +394,7 @@
           "name"
         ],
         "type": "string",
-        "description": "Possible order by fields: {enabled, name, created_by, created_on, modified_by, modified_on}",
+        "description": "Possible order by fields: {created_by, created_on, enabled, modified_by, modified_on, name}",
         "name": "sort",
         "in": "query"
       },
@@ -469,10 +469,10 @@
           "rules.ruletype_name"
         ],
         "type": "string",
-        "description": "Possible order by fields: {rules.current_version.name, "
-        "rules.current_version.description, rules.current_version.pattern_severity, rules.current_version.modified_by, "
-        "rules.current_version.modified_on, rules.ruletype_name, rules.enabled, rules.current_version.action_label, "
-        "rules.created_by, rules.created_on}",
+        "description": "Possible order by fields: {rules.created_by, rules.created_on, "
+        "rules.current_version.action_label, rules.current_version.description, rules.current_version.modified_by, "
+        "rules.current_version.modified_on, rules.current_version.name, rules.current_version.pattern_severity, "
+        "rules.enabled, rules.ruletype_name}",
         "name": "sort",
         "in": "query"
       },
diff --git a/src/falconpy/_endpoint/deprecated/_datascanner.py b/src/falconpy/_endpoint/deprecated/_datascanner.py
new file mode 100644
index 00000000..c9e58a23
--- /dev/null
+++ b/src/falconpy/_endpoint/deprecated/_datascanner.py
@@ -0,0 +1,87 @@
+"""Internal API endpoint constant library (deprecated operations).
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+_datascanner_endpoints = [
+  [
+    "get-image-registry-credentials",
+    "GET",
+    "/data-security-dspm/entities/image-registry-credentials/v1",
+    "",
+    "datascanner",
+    []
+  ],
+  [
+    "get-data-scanner-tasks",
+    "GET",
+    "/data-security-dspm/entities/scanner-tasks/v1",
+    "",
+    "datascanner",
+    [
+      {
+        "type": "string",
+        "description": "ID of the data scanner",
+        "name": "X-Scanner-Id",
+        "in": "header",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "update-data-scanner-tasks",
+    "PATCH",
+    "/data-security-dspm/entities/scanner-tasks/v1",
+    "",
+    "datascanner",
+    [
+      {
+        "type": "string",
+        "description": "ID of the data scanner",
+        "name": "X-Scanner-Id",
+        "in": "header",
+        "required": True
+      },
+      {
+        "type": "string",
+        "description": "Provider ID of machine",
+        "name": "X-Machine-Id",
+        "in": "header",
+        "required": True
+      }
+    ]
+  ]
+]
diff --git a/src/falconpy/_endpoint/deprecated/_discover.py b/src/falconpy/_endpoint/deprecated/_discover.py
index 30a76dc4..35c991b1 100644
--- a/src/falconpy/_endpoint/deprecated/_discover.py
+++ b/src/falconpy/_endpoint/deprecated/_discover.py
@@ -37,6 +37,173 @@
 """
 
 _discover_endpoints = [
+  [
+    "combined-applications",
+    "GET",
+    "/discover/combined/applications/v1",
+    "Search for applications in your environment by providing an FQL filter and paging details. Returns "
+    "details on applications which match the filter criteria.",
+    "discover",
+    [
+      {
+        "type": "string",
+        "description": "A pagination token used with the `limit` parameter to manage pagination of results. On "
+        " your first request, don't provide an `after` token. On subsequent requests, provide the `after` token from "
+        "the previous response to continue from that place in the results.",
+        "name": "after",
+        "in": "query"
+      },
+      {
+        "maximum": 1000,
+        "minimum": 1,
+        "type": "integer",
+        "description": "The number of application ids to return in this response (Min: 1, Max: 1000, Default: "
+        "100). Use with the `after` parameter to manage pagination of results.",
+        "name": "limit",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Sort applications by their properties. A single sort field is allowed.",
+        "name": "sort",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Search for applications in your environment by providing an FQL "
+        "filter.\n\t\t\t\tAvailable filter fields that support exact match: name, version, vendor, name_vendor, "
+        "name_vendor_version, first_seen_timestamp, installation_timestamp, architectures, installation_paths, "
+        "versioning_scheme, groups, is_normalized, last_used_user_sid, last_used_user_name, last_used_file_name, "
+        "last_used_file_hash, last_used_timestamp, last_updated_timestamp, is_suspicious, host.id, host.platform_name, "
+        "host.hostname, cid, host.os_version, host.machine_domain, host.ou, host.site_name, host.country, "
+        "host.current_mac_address, host.current_network_prefix, host.tags, host.groups, host.product_type_desc, "
+        "host.kernel_version, host.system_manufacturer, host.internet_exposure, host.agent_version, host.external_ip, "
+        "host.aid\n\t\t\t\tAvailable filter fields that supports wildcard (*): name, version, vendor, name_vendor, "
+        "name_vendor_version, architectures, installation_paths, groups, last_used_user_sid, last_used_user_name, "
+        "last_used_file_name, last_used_file_hash, host.platform_name, host.hostname, cid, host.os_version, "
+        "host.machine_domain, host.ou, host.site_name, host.country, host.current_mac_address, "
+        "host.current_network_prefix, host.tags, host.groups, host.product_type_desc, host.kernel_version, "
+        "host.system_manufacturer, host.internet_exposure, host.agent_version, host.external_ip, "
+        "host.aid\n\t\t\t\tAvailable filter fields that supports range comparisons (>, <, >=, <=): "
+        "first_seen_timestamp, installation_timestamp, last_used_timestamp, last_updated_timestamp\n\t\t\t\tAll filter "
+        "fields and operations supports negation (!).",
+        "name": "filter",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "Select various details blocks to be returned for each application entity. Supported "
+        "values:\n\n<ul><li>browser_extension</li><li>host_info</li><li>install_usage</li></ul>",
+        "name": "facet",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "combined-hosts",
+    "GET",
+    "/discover/combined/hosts/v1",
+    "Search for assets in your environment by providing an FQL (Falcon Query Language) filter and paging "
+    "details. Returns details on assets which match the filter criteria.",
+    "discover",
+    [
+      {
+        "type": "string",
+        "description": "A pagination token used with the `limit` parameter to manage pagination of results. On "
+        " your first request, don't provide an `after` token. On subsequent requests, provide the `after` token from "
+        "the previous response to continue from that place in the results.",
+        "name": "after",
+        "in": "query"
+      },
+      {
+        "maximum": 1000,
+        "minimum": 1,
+        "type": "integer",
+        "description": "The number of asset IDs to return in this response (min: 1, max: 1000, default: 100). "
+        "Use with the `after` parameter to manage pagination of results.",
+        "name": "limit",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Sort assets by their properties. A single sort field is allowed. Common sort options "
+        "include:\n\n<ul><li>hostname|asc</li><li>product_type_desc|desc</li></ul>",
+        "name": "sort",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Filter assets using an FQL query. Common filter options include:<ul><li>entity_type:'m "
+        "anaged'</li><li>product_type_desc:'Workstation'</li><li>platform_name:'Windows'</li><li>last_seen_timestamp:>' "
+        "now-7d'</li></ul>\n\t\t\tAvailable filter fields that support exact match: id, aid, entity_type, country, "
+        "city, platform_name, os_version, kernel_version, product_type_desc, tags, groups, agent_version, "
+        "system_product_name, system_manufacturer, system_serial_number, bios_manufacturer, bios_version, ou, "
+        "machine_domain, site_name, external_ip, hostname, local_ips_count, network_interfaces.local_ip, "
+        "network_interfaces.mac_address, network_interfaces.interface_alias, network_interfaces.interface_description, "
+        "network_interfaces.network_prefix, last_discoverer_aid, discoverer_count, discoverer_aids, discoverer_tags, "
+        "discoverer_platform_names, discoverer_product_type_descs, confidence, internet_exposure,  os_is_eol, "
+        "data_providers, data_providers_count, mac_addresses, local_ip_addresses, reduced_functionality_mode, "
+        "number_of_disk_drives, processor_package_count, physical_core_count, logical_core_count, total_disk_space, "
+        "disk_sizes.disk_name, disk_sizes.disk_space, cpu_processor_name, total_memory, encryption_status, "
+        "encrypted_drives, encrypted_drives_count, unencrypted_drives, unencrypted_drives_count, "
+        "os_security.secure_boot_requested_status, os_security.device_guard_status, os_security.device_guard_status, "
+        "os_security.device_guard_status, os_security.system_guard_status, os_security.credential_guard_status, "
+        "os_security.iommu_protection_status, os_security.secure_boot_enabled_status, "
+        "os_security.uefi_memory_protection_status, os_security.virtualization_based_security_status, "
+        "os_security.kernel_dma_protection_status, total_bios_files, bios_hashes_data.sha256_hash, "
+        "bios_hashes_data.measurement_type, bios_id, average_processor_usage, average_memory_usage, "
+        "average_memory_usage_pct, max_processor_usage, max_memory_usage, max_memory_usage_pct, used_disk_space, "
+        "used_disk_space_pct, available_disk_space, available_disk_space_pct, mount_storage_info.mount_path, "
+        "mount_storage_info.used_space, mount_storage_info.available_space, form_factor, servicenow_id, owned_by, "
+        "managed_by, assigned_to, department, fqdn, used_for, object_guid, object_sid, ad_user_account_control, "
+        "account_enabled, creation_timestamp, email, os_service_pack, location, state, cpu_manufacturer, "
+        "discovering_by\n\t\t\tAvailable filter fields that supports wildcard (*): id, aid, entity_type, country, city, "
+        " platform_name, os_version, kernel_version, product_type_desc, tags, groups, agent_version, "
+        "system_product_name, system_manufacturer, system_serial_number, bios_manufacturer, bios_version, ou, "
+        "machine_domain, site_name, external_ip, hostname, network_interfaces.local_ip, network_interfaces.mac_address, "
+        " network_interfaces.interface_alias, network_interfaces.interface_description, "
+        "network_interfaces.network_prefix, last_discoverer_aid, discoverer_aids, discoverer_tags, "
+        "discoverer_platform_names, discoverer_product_type_descs, confidence, internet_exposure,  os_is_eol, "
+        "data_providers, mac_addresses, local_ip_addresses, reduced_functionality_mode, disk_sizes.disk_name, "
+        "cpu_processor_name, encryption_status, encrypted_drives, unencrypted_drives, "
+        "os_security.secure_boot_requested_status, os_security.device_guard_status, os_security.device_guard_status, "
+        "os_security.device_guard_status, os_security.system_guard_status, os_security.credential_guard_status, "
+        "os_security.iommu_protection_status, os_security.secure_boot_enabled_status, "
+        "os_security.uefi_memory_protection_status, os_security.virtualization_based_security_status, "
+        "os_security.kernel_dma_protection_status, bios_hashes_data.sha256_hash, bios_hashes_data.measurement_type, "
+        "bios_id, mount_storage_info.mount_path, form_factor, servicenow_id, owned_by, managed_by, assigned_to, "
+        "department, fqdn, used_for, object_guid, object_sid, account_enabled, email, os_service_pack, location, state, "
+        " cpu_manufacturer, discovering_by\n\t\t\tAvailable filter fields that supports range comparisons (>, <, >=, "
+        "<=): first_seen_timestamp, last_seen_timestamp, local_ips_count, discoverer_count, confidence, "
+        "number_of_disk_drives, processor_package_count, physical_core_count, data_providers_count, logical_core_count, "
+        " total_disk_space, disk_sizes.disk_space, total_memory, encrypted_drives_count, unencrypted_drives_count, "
+        "total_bios_files, average_processor_usage, average_memory_usage, average_memory_usage_pct, "
+        "max_processor_usage, max_memory_usage, max_memory_usage_pct, used_disk_space, used_disk_space_pct, "
+        "available_disk_space, available_disk_space_pct, mount_storage_info.used_space, "
+        "mount_storage_info.available_space, ad_user_account_control, creation_timestamp\n\t\t\tAll filter fields and "
+        "operations supports negation (!).",
+        "name": "filter",
+        "in": "query",
+        "required": True
+      },
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "Select various details blocks to be returned for each host entity. Supported "
+        "values:\n\n<ul><li>system_insights</li><li>third_party</li><li>risk_factors</li></ul>",
+        "name": "facet",
+        "in": "query"
+      }
+    ]
+  ],
   [
     "get-accounts",
     "GET",
diff --git a/src/falconpy/_endpoint/deprecated/_exposure_management.py b/src/falconpy/_endpoint/deprecated/_exposure_management.py
index 9a2326d2..9ef814ec 100644
--- a/src/falconpy/_endpoint/deprecated/_exposure_management.py
+++ b/src/falconpy/_endpoint/deprecated/_exposure_management.py
@@ -134,6 +134,31 @@
       }
     ]
   ],
+  [
+    "delete-external-assets",
+    "DELETE",
+    "/fem/entities/external-assets/v1",
+    "Delete multiple external assets.",
+    "exposure_management",
+    [
+      {
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "multi",
+        "description": "One or more asset IDs (max: 100).",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      },
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
   [
     "query-external-assets",
     "GET",
@@ -173,13 +198,13 @@
         "dns_domain.services.hosting_provider, dns_domain.services.last_seen, dns_domain.services.platform_name, "
         "dns_domain.services.port, dns_domain.services.protocol, dns_domain.services.protocol_port, "
         "dns_domain.services.status, dns_domain.services.status_code, dns_domain.services.transport, dns_domain.type, "
-        "first_seen, id, internet_exposure, ip.asn, ip.cloud_vm.description, ip.cloud_vm.instance_id, "
-        "ip.cloud_vm.lifecycle, ip.cloud_vm.mac_address, ip.cloud_vm.owner_id, ip.cloud_vm.platform, "
-        "ip.cloud_vm.private_ip, ip.cloud_vm.public_ip, ip.cloud_vm.region, ip.cloud_vm.security_groups, "
-        "ip.cloud_vm.source, ip.cloud_vm.status, ip.fqdns, ip.ip_address, ip.isp, ip.location.area_code, "
-        "ip.location.city, ip.location.country_code, ip.location.country_name, ip.location.postal_code, "
-        "ip.location.region_code, ip.location.region_name, ip.location.timezone, ip.ptr, ip.aid, "
-        "ip.services.applications.category, ip.services.applications.cpe, ip.services.applications.name, "
+        "first_seen, id, internet_exposure, ip.asn, ip.cloud_provider, ip.cloud_vm.description, "
+        "ip.cloud_vm.instance_id, ip.cloud_vm.lifecycle, ip.cloud_vm.mac_address, ip.cloud_vm.owner_id, "
+        "ip.cloud_vm.platform, ip.cloud_vm.private_ip, ip.cloud_vm.public_ip, ip.cloud_vm.region, "
+        "ip.cloud_vm.security_groups, ip.cloud_vm.source, ip.cloud_vm.status, ip.fqdns, ip.ip_address, ip.isp, "
+        "ip.location.area_code, ip.location.city, ip.location.country_code, ip.location.country_name, "
+        "ip.location.postal_code, ip.location.region_code, ip.location.region_name, ip.location.timezone, ip.ptr, "
+        "ip.aid, ip.services.applications.category, ip.services.applications.cpe, ip.services.applications.name, "
         "ip.services.applications.vendor, ip.services.applications.version, ip.services.cloud_provider, "
         "ip.services.cpes, ip.services.first_seen, ip.services.last_seen, ip.services.platform_name, ip.services.port, "
         "ip.services.protocol, ip.services.protocol_port, ip.services.status, ip.services.status_code, "
diff --git a/src/falconpy/_endpoint/deprecated/_identity_protection.py b/src/falconpy/_endpoint/deprecated/_identity_protection.py
index de1f8cb4..a379876a 100644
--- a/src/falconpy/_endpoint/deprecated/_identity_protection.py
+++ b/src/falconpy/_endpoint/deprecated/_identity_protection.py
@@ -53,5 +53,252 @@
         "required": True
       }
     ]
+  ],
+  [
+    "api.preempt.proxy.get.policy-rules",
+    "GET",
+    "/identity-protection/entities/policy-rules/v1",
+    "Get policy rules",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "maxItems": 100,
+        "minItems": 1,
+        "uniqueItems": True,
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "Rule IDs",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "api.preempt.proxy.post.policy-rules",
+    "POST",
+    "/identity-protection/entities/policy-rules/v1",
+    "Create policy rule",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "api.preempt.proxy.delete.policy-rules",
+    "DELETE",
+    "/identity-protection/entities/policy-rules/v1",
+    "Delete policy rules",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "maxItems": 100,
+        "minItems": 1,
+        "uniqueItems": True,
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "Rule IDs",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "api.preempt.proxy.get.policy-rules.query",
+    "GET",
+    "/identity-protection/queries/policy-rules/v1",
+    "Query policy rule IDs",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "type": "boolean",
+        "description": "Whether the rule is enabled",
+        "name": "enabled",
+        "in": "query"
+      },
+      {
+        "type": "boolean",
+        "description": "Whether the rule is in simulation mode",
+        "name": "simulation_mode",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Rule name",
+        "name": "name",
+        "in": "query"
+      }
+    ]
+  ],
+  [
+    "api_preempt_proxy_post_graphql",
+    "POST",
+    "/identity-protection/combined/graphql/v1",
+    "Identity Protection GraphQL API. Allows to retrieve entities, timeline activities, identity-based "
+    "incidents and security assessment. Allows to perform actions on entities and identity-based incidents.",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "api_preempt_proxy_get_policy_rules",
+    "GET",
+    "/identity-protection/entities/policy-rules/v1",
+    "Get policy rules",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "maxItems": 100,
+        "minItems": 1,
+        "uniqueItems": True,
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "Rule IDs",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "api_preempt_proxy_post_policy_rules",
+    "POST",
+    "/identity-protection/entities/policy-rules/v1",
+    "Create policy rule",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "name": "body",
+        "in": "body",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "api_preempt_proxy_delete_policy_rules",
+    "DELETE",
+    "/identity-protection/entities/policy-rules/v1",
+    "Delete policy rules",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "maxItems": 100,
+        "minItems": 1,
+        "uniqueItems": True,
+        "type": "array",
+        "items": {
+          "type": "string"
+        },
+        "collectionFormat": "csv",
+        "description": "Rule IDs",
+        "name": "ids",
+        "in": "query",
+        "required": True
+      }
+    ]
+  ],
+  [
+    "api_preempt_proxy_get_policy_rules_query",
+    "GET",
+    "/identity-protection/queries/policy-rules/v1",
+    "Query policy rule IDs",
+    "identity_protection",
+    [
+      {
+        "type": "string",
+        "description": "Authorization Header",
+        "name": "Authorization",
+        "in": "header",
+        "required": True
+      },
+      {
+        "type": "boolean",
+        "description": "Whether the rule is enabled",
+        "name": "enabled",
+        "in": "query"
+      },
+      {
+        "type": "boolean",
+        "description": "Whether the rule is in simulation mode",
+        "name": "simulation_mode",
+        "in": "query"
+      },
+      {
+        "type": "string",
+        "description": "Rule name",
+        "name": "name",
+        "in": "query"
+      }
+    ]
   ]
 ]
diff --git a/src/falconpy/_enum/_container_base_url.py b/src/falconpy/_enum/_container_base_url.py
index dc4a454a..15e9127c 100644
--- a/src/falconpy/_enum/_container_base_url.py
+++ b/src/falconpy/_enum/_container_base_url.py
@@ -48,3 +48,4 @@ class ContainerBaseURL(Enum):
     US2 = "container-upload.us-2.crowdstrike.com"
     EU1 = "container-upload.eu-1.crowdstrike.com"
     USGOV1 = "container-upload.laggar.gcw.crowdstrike.com"
+    USGOV2 = "container-upload.us-gov-2.crowdstrike.mil"
diff --git a/src/falconpy/_payload/__init__.py b/src/falconpy/_payload/__init__.py
index 0f7510c0..187cbd2f 100644
--- a/src/falconpy/_payload/__init__.py
+++ b/src/falconpy/_payload/__init__.py
@@ -28,6 +28,17 @@
     token_settings_payload
     )
 from ._api_integrations import api_plugin_command_payload
+from ._aspm import (
+    aspm_delete_tag_payload,
+    aspm_update_tag_payload,
+    aspm_violations_search_payload,
+    aspm_get_services_count_payload,
+    aspm_query_payload,
+    aspm_integration_payload,
+    aspm_integration_task_payload,
+    aspm_node_payload,
+    aspm_application_payload
+)
 from ._host_group import host_group_create_payload, host_group_update_payload
 from ._recon import (
     recon_action_payload,
@@ -43,9 +54,12 @@
     registry_payload,
     image_policy_payload,
     image_exclusions_payload,
-    image_group_payload
+    image_group_payload,
+    base_image_payload
     )
+from ._delivery_settings import delivery_settings_payload
 from ._detects import update_detects_payload
+from ._identity_protection import idp_policy_payload
 from ._incidents import incident_action_parameters
 from ._ioa import ioa_exclusion_payload, ioa_custom_payload
 from ._mobile_enrollment import mobile_enrollment_payload
@@ -132,4 +146,8 @@
     "workflow_definition_payload", "workflow_human_input", "workflow_mock_payload",
     "cspm_service_account_validate_payload", "api_plugin_command_payload", "mobile_enrollment_payload",
     "filevantage_start_payload", "fem_asset_payload", "certificate_based_exclusions_payload",
+    "idp_policy_payload", "delivery_settings_payload", "base_image_payload", "aspm_delete_tag_payload",
+    "aspm_update_tag_payload", "aspm_violations_search_payload", "aspm_get_services_count_payload",
+    "aspm_query_payload", "aspm_integration_payload", "aspm_integration_task_payload", "aspm_node_payload",
+    "aspm_application_payload"
 ]
diff --git a/src/falconpy/_payload/_api_integrations.py b/src/falconpy/_payload/_api_integrations.py
index 4d35253c..54504ebe 100644
--- a/src/falconpy/_payload/_api_integrations.py
+++ b/src/falconpy/_payload/_api_integrations.py
@@ -49,7 +49,15 @@ def api_plugin_command_payload(passed_keywords: dict) -> dict:
             "id": "string",
             "operation_id": "string",
             "request": {
-                "description": "string"
+                "data": "string",
+                "description": "string",
+                "params": {
+                    "cookie": {},
+                    "header": {},
+                    "path": {},
+                    "query": {}
+                },
+                "x-www-form-urlencoded": {}
             },
             "version": integer
             }
@@ -68,6 +76,24 @@ def api_plugin_command_payload(passed_keywords: dict) -> dict:
                 item["request"] = {"description": passed_keywords.get(key)}
             else:
                 item[key] = passed_keywords.get(key)
+
+    # Request
+    rkeys = ["data", "description", "params"]
+    ritem = {}
+    for key in rkeys:
+        if passed_keywords.get(key, None):
+            ritem[key] = passed_keywords.get(key)
+
+    # Request params
+    rpkeys = ["cookie", "header", "path", "query"]
+    for key in rpkeys:
+        if passed_keywords.get(key, None):
+            if "param" not in ritem:
+                ritem["params"] = {}
+            ritem["params"][key] = passed_keywords.get(key)
+    if ritem:
+        item["request"] = ritem
+
     returned["resources"].append(item)
 
     return returned
diff --git a/src/falconpy/_payload/_aspm.py b/src/falconpy/_payload/_aspm.py
new file mode 100644
index 00000000..94b3bd9c
--- /dev/null
+++ b/src/falconpy/_payload/_aspm.py
@@ -0,0 +1,759 @@
+"""Internal payload handling library - ASPM.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+
+def aspm_delete_tag_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted ASPM tag delete payload.
+
+    {
+        "entries": [
+            {
+                "isSensitive": boolean,
+                "persistentSignature": "string",
+                "value": "string"
+            }
+        ],
+        "name": "string"
+    }
+    """
+    keymap = {"is_sensitive": "isSensitive", "persistent_signature": "persistentSignature"}
+    returned = {"entries": []}
+    keys = ["is_sensitive", "persistent_signature", "value"]
+    item = {}
+    for key in keys:
+        if passed_keywords.get(key, None) is not None:
+            keyset = key
+            if key in keymap:
+                keyset = keymap.get(key)
+            item[keyset] = passed_keywords.get(key)
+    returned["entries"].append(item)
+    # Overrides individual keywords
+    mainkeys = ["name", "entries"]
+    for key in mainkeys:
+        if passed_keywords.get(key, None):
+            returned[key] = passed_keywords.get(key)
+
+    return returned
+
+
+def aspm_update_tag_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted ASPM tag update payload.
+
+    {
+        "entries": [
+            {
+                "isSensitive": true,
+                "name": "string",
+                "tag_type": "string",
+                "value": "string"
+            }
+        ]
+    }
+    """
+    keymap = {"is_sensitive": "isSensitive"}
+    returned = {"entries": []}
+    keys = ["is_sensitive", "persistent_signature", "value", "name"]
+    item = {}
+    for key in keys:
+        if passed_keywords.get(key, None) is not None:
+            keyset = key
+            if key in keymap:
+                keyset = keymap.get(key)
+            item[keyset] = passed_keywords.get(key)
+    returned["entries"].append(item)
+    # Overrides individual keywords
+    if passed_keywords.get("entries", None):
+        returned["entries"] = passed_keywords.get("entries")
+
+    return returned
+
+
+def aspm_violations_search_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted violations search payload.
+
+    {
+        "filter": {
+            "order_by": {
+                "by_field": "string",
+                "direction": 0
+            },
+            "paginate": {
+                "direction": "string",
+                "limit": 0,
+                "offset": 0,
+                "orderBy": [
+                    "string"
+                ]
+            }
+        },
+        "optionalTime": 0,
+        "revisionId": 0
+    }
+    """
+    returned = {}
+    keymap = {"optional_time": "optionalTime", "revision_id": "revisionId"}
+    keys = ["filter", "optional_time", "revision_id"]
+    for key in keys:
+        if passed_keywords.get(key, None):
+            keyset = key
+            if key in keymap:
+                keyset = keymap.get(key)
+            returned[keyset] = passed_keywords.get(key)
+
+    return returned
+
+
+def aspm_get_services_count_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted services count search payload.
+
+    {
+        "deploymentTupleFilters": [
+            {
+            "excludes": [
+                {
+                    "key": "string",
+                    "value": "string"
+                }
+            ],
+            "includes": [
+                {
+                    "key": "string",
+                    "value": "string"
+                }
+            ]
+            }
+        ],
+        "nestingLevel": integer,
+        "onlyCount": boolean,
+        "optionalTime": integer,
+        "pagination": {
+            "direction": "string",
+            "limit": integer,
+            "offset": integer,
+            "order_by": [
+                "string"
+            ]
+        },
+        "persistentSignatures": [
+            "string"
+        ],
+        "qlFilters": "string",
+        "relatedEntities": [
+            {
+                "aggregation_type": integer,
+                "entity_type": integer,
+                "filters": {
+                    "include_du_services": boolean,
+                    "only_du_types": boolean,
+                    "only_get_brokers": boolean
+                },
+                "groupByFields": {
+                    "fields": [
+                        "string"
+                    ]
+                }
+            }
+        ],
+        "revisionId": integer,
+        "rolesSignature": "string"
+    }
+    """
+    returned = {}
+    keymap = {
+        "deployment_tuple_filters": "deploymentTupleFilters",
+        "nesting_level": "nestingLevel",
+        "only_count": "onlyCount",
+        "optional_time": "optionalTime",
+        "persistent_signatures": "persistentSignatures",
+        "ql_filters": "qlFilters",
+        "related_entities": "relatedEntities",
+        "revision_id": "revisionId",
+        "roles_signature": "rolesSignature"
+    }
+    keys = ["deployment_tuple_filters", "nesting-level", "only_count", "optional_time",
+            "pagination", "persistent_signatures", "ql_filters", "related_entities", "revision_id",
+            "roles_signatures"
+            ]
+    for key in keys:
+        if passed_keywords.get(key, None) is not None:
+            keyset = key
+            if key in keymap:
+                keyset = keymap.get(key)
+            returned[keyset] = passed_keywords.get(key)
+
+    return returned
+
+
+def aspm_query_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatting ASPM query payload.
+
+    {
+        "paginate": {
+            "direction": "string",
+            "limit": integer,
+            "offset": integer,
+            "orderBy": [
+                "string"
+            ]
+        },
+        "query": "string",
+        "selectFields": {
+            "fields": [
+                "string"
+            ],
+            "serviceFields": [
+                "string"
+            ],
+            "withoutServices": boolean
+        },
+        "timestamp": integer
+    }
+    """
+    keys = ["paginate", "query", "select_fields", "timestamp"]
+    keymap = {"select_fields": "selectFields"}
+    returned = {}
+    for key in keys:
+        if passed_keywords.get(key, None):
+            keyset = key
+            if key in keymap:
+                keyset = keymap.get(key)
+            returned[keyset] = passed_keywords.get(key)
+
+    return returned
+
+
+def aspm_integration_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted integration update payload.
+
+    {
+        "integration": {
+            "data": "string",
+            "enabled": boolean,
+            "id": integer,
+            "integration_type": {
+                "configured": boolean,
+                "display_name": "string",
+                "enabled": boolean,
+                "id": integer,
+                "name": "string"
+            },
+            "name": "string",
+            "node": {
+                "additional_header": "string",
+                "current_aws_arn": "string",
+                "dashboard_url": "string",
+                "id": integer,
+                "last_health_check": integer,
+                "name": "string",
+                "node_type": "string",
+                "password": "string",
+                "pod_settings": {
+                    "imageAddress": "string",
+                    "imagePullSecrets": [
+                        "string"
+                    ],
+                    "podLabels": [
+                        {
+                            "key": "string",
+                            "value": "string"
+                        }
+                    ]
+                },
+                "proxy_address": "string",
+                "type": "string",
+                "useJobs": boolean,
+                "username": "string"
+            },
+            "type": {
+                "configured": boolean,
+                "display_name": "string",
+                "enabled": boolean,
+                "id": integer,
+                "name": "string"
+            },
+            "update_time": integer
+        },
+        "overwriteFields": [
+            "string"
+        ]
+    }
+    """
+    keys = ["integration", "overwrite_fields"]
+    returned = {}
+    for key in keys:
+        if passed_keywords.get(key, None):
+            keyset = key
+            if key == "overwrite_fields":
+                keyset = "overwriteFields"
+            returned[keyset] = passed_keywords.get(key)
+
+    return returned
+
+
+def aspm_integration_task_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formated ASPM integration task.
+
+    {
+        "access_token": "string",
+        "category": "string",
+        "data": "string",
+        "override": boolean,
+        "scheduled": boolean,
+        "task_id": integer,
+        "integration_task": {
+            "access_token": "string",
+            "additional_header": "string",
+            "business_application": "string",
+            "data": "string",
+            "enabled": true,
+            "id": 0,
+            "integration": {
+            "data": "string",
+            "enabled": true,
+            "id": 0,
+            "integration_type": {
+                "configured": true,
+                "display_name": "string",
+                "enabled": true,
+                "id": 0,
+                "name": "string"
+            },
+            "name": "string",
+            "node": {
+                "additional_header": "string",
+                "current_aws_arn": "string",
+                "dashboard_url": "string",
+                "id": 0,
+                "last_health_check": 0,
+                "name": "string",
+                "node_type": "string",
+                "password": "string",
+                "pod_settings": {
+                "imageAddress": "string",
+                "imagePullSecrets": [
+                    "string"
+                ],
+                "podLabels": [
+                    {
+                    "key": "string",
+                    "value": "string"
+                    }
+                ]
+                },
+                "proxy_address": "string",
+                "type": "string",
+                "useJobs": true,
+                "username": "string"
+            },
+            "type": {
+                "configured": true,
+                "display_name": "string",
+                "enabled": true,
+                "id": 0,
+                "name": "string"
+            },
+            "update_time": 0
+            },
+            "integration_task_type": {
+            "category": "string",
+            "display_name": "string",
+            "enabled": true,
+            "id": 0,
+            "name": "string",
+            "required_integration_types": [
+                {
+                "configured": true,
+                "display_name": "string",
+                "enabled": true,
+                "id": 0,
+                "name": "string"
+                }
+            ]
+            },
+            "latest_task_run": {
+            "create_time": {
+                "nanos": 0,
+                "seconds": 0
+            },
+            "events": [
+                {
+                "FlatData": {
+                    "additionalProp1": "string",
+                    "additionalProp2": "string",
+                    "additionalProp3": "string"
+                },
+                "additional_data": "string",
+                "data": {
+                    "additional_info": "string",
+                    "aws": {
+                    "accountArn": "string",
+                    "region": "string"
+                    },
+                    "azureSite": {
+                    "location": "string",
+                    "resourceGroup": "string",
+                    "siteId": "string",
+                    "siteKind": "string",
+                    "siteName": "string",
+                    "subscriptionId": "string"
+                    },
+                    "azureVm": {
+                    "id": "string",
+                    "region": "string",
+                    "resourceGroup": "string",
+                    "subscriptionId": "string",
+                    "vmName": "string"
+                    },
+                    "cloud_function": {
+                    "function_name": "string"
+                    },
+                    "crowdstrike_cloud_security": {
+                    "baseUrl": "string",
+                    "clientId": "string",
+                    "cloudProvider": "string",
+                    "iomID": "string",
+                    "policyId": 0,
+                    "resourceId": "string",
+                    "resourceType": "string"
+                    },
+                    "ec2": {
+                    "instance_id": "string",
+                    "instance_name": "string"
+                    },
+                    "ecs": {
+                    "clusterName": "string",
+                    "collectionMethod": 0,
+                    "resourceArn": "string",
+                    "resourceName": "string",
+                    "resourceType": "string"
+                    },
+                    "gcp": {
+                    "project": "string",
+                    "region": "string"
+                    },
+                    "host": {
+                    "address": "string"
+                    },
+                    "k8s": {
+                    "container": "string",
+                    "namespace": "string",
+                    "pod_name": "string"
+                    },
+                    "lambda": {
+                    "lambdaArn": "string",
+                    "lambdaName": "string"
+                    },
+                    "remedy": {
+                    "content": "string",
+                    "url": "string"
+                    },
+                    "snyk": {
+                    "apiEndpointUrl": "string",
+                    "appEndpointUrl": "string",
+                    "groupId": "string"
+                    },
+                    "sonatype": {
+                    "CVEId": "string",
+                    "applicationPublicId": "string",
+                    "componentNameVersion": "string",
+                    "iqServerUrl": "string"
+                    }
+                },
+                "flat_fields": [
+                    "string"
+                ],
+                "id": 0,
+                "message": "string",
+                "object": "string",
+                "object_type": "string",
+                "send_time": {
+                    "nanos": 0,
+                    "seconds": 0
+                },
+                "status": 0
+                }
+            ],
+            "id": 0,
+            "latest_event": {
+                "FlatData": {
+                "additionalProp1": "string",
+                "additionalProp2": "string",
+                "additionalProp3": "string"
+                },
+                "additional_data": "string",
+                "data": {
+                "additional_info": "string",
+                "aws": {
+                    "accountArn": "string",
+                    "region": "string"
+                },
+                "azureSite": {
+                    "location": "string",
+                    "resourceGroup": "string",
+                    "siteId": "string",
+                    "siteKind": "string",
+                    "siteName": "string",
+                    "subscriptionId": "string"
+                },
+                "azureVm": {
+                    "id": "string",
+                    "region": "string",
+                    "resourceGroup": "string",
+                    "subscriptionId": "string",
+                    "vmName": "string"
+                },
+                "cloud_function": {
+                    "function_name": "string"
+                },
+                "crowdstrike_cloud_security": {
+                    "baseUrl": "string",
+                    "clientId": "string",
+                    "cloudProvider": "string",
+                    "iomID": "string",
+                    "policyId": 0,
+                    "resourceId": "string",
+                    "resourceType": "string"
+                },
+                "ec2": {
+                    "instance_id": "string",
+                    "instance_name": "string"
+                },
+                "ecs": {
+                    "clusterName": "string",
+                    "collectionMethod": 0,
+                    "resourceArn": "string",
+                    "resourceName": "string",
+                    "resourceType": "string"
+                },
+                "gcp": {
+                    "project": "string",
+                    "region": "string"
+                },
+                "host": {
+                    "address": "string"
+                },
+                "k8s": {
+                    "container": "string",
+                    "namespace": "string",
+                    "pod_name": "string"
+                },
+                "lambda": {
+                    "lambdaArn": "string",
+                    "lambdaName": "string"
+                },
+                "remedy": {
+                    "content": "string",
+                    "url": "string"
+                },
+                "snyk": {
+                    "apiEndpointUrl": "string",
+                    "appEndpointUrl": "string",
+                    "groupId": "string"
+                },
+                "sonatype": {
+                    "CVEId": "string",
+                    "applicationPublicId": "string",
+                    "componentNameVersion": "string",
+                    "iqServerUrl": "string"
+                }
+                },
+                "flat_fields": [
+                "string"
+                ],
+                "id": 0,
+                "message": "string",
+                "object": "string",
+                "object_type": "string",
+                "send_time": {
+                "nanos": 0,
+                "seconds": 0
+                },
+                "status": 0
+            },
+            "metadata": {
+                "collected_objects": 0,
+                "end_time": {
+                "nanos": 0,
+                "seconds": 0
+                },
+                "integration_task_id": 0,
+                "integration_task_name": "string",
+                "integration_task_type": {
+                "category": "string",
+                "display_name": "string",
+                "enabled": true,
+                "id": 0,
+                "name": "string",
+                "required_integration_types": [
+                    {
+                    "configured": true,
+                    "display_name": "string",
+                    "enabled": true,
+                    "id": 0,
+                    "name": "string"
+                    }
+                ]
+                },
+                "start_time": {
+                "nanos": 0,
+                "seconds": 0
+                },
+                "total_objects": 0
+            },
+            "progress": 0,
+            "scheduled": true,
+            "trace_uuid": "string"
+            },
+            "name": "string",
+            "next_run": {
+            "nanos": 0,
+            "seconds": 0
+            },
+            "progress": 0,
+            "schedule": {
+            "every": 0,
+            "every_unit": 0,
+            "hour": 0,
+            "minute": 0,
+            "startTimeTimezoneOffsetMinutes": 0,
+            "start_time": {
+                "nanos": 0,
+                "seconds": 0
+            },
+            "timezone": 0,
+            "weekdays": [
+                0
+            ]
+            },
+            "schedule_every_unit_display_name": "string",
+            "trigger": "string",
+            "type": {
+            "category": "string",
+            "display_name": "string",
+            "enabled": true,
+            "id": 0,
+            "name": "string",
+            "required_integration_types": [
+                {
+                "configured": true,
+                "display_name": "string",
+                "enabled": true,
+                "id": 0,
+                "name": "string"
+                }
+            ]
+            }
+        }
+    }
+    """
+    keys = ["access_token", "category", "data", "override", "scheduled", "task_id", "integration_task"]
+    returned = {}
+    for key in keys:
+        if passed_keywords.get(key, None) is not None:
+            returned[key] = passed_keywords.get(key)
+
+    return returned
+
+
+def aspm_node_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted ASPM node payload.
+
+    {
+        "additional_header": "string",
+        "current_aws_arn": "string",
+        "dashboard_url": "string",
+        "id": integer,
+        "last_health_check": integer,
+        "name": "string",
+        "node_type": "string",
+        "password": "string",
+        "pod_settings": {
+            "imageAddress": "string",
+            "imagePullSecrets": [
+                "string"
+            ],
+            "podLabels": [
+                {
+                    "key": "string",
+                    "value": "string"
+                }
+            ]
+        },
+        "proxy_address": "string",
+        "type": "string",
+        "useJobs": boolean,
+        "username": "string"
+    }
+    """
+    returned = {}
+    keys = ["additional_header", "current_aws_arn", "dashbaord_url", "id", "last_health_check",
+            "name", "node_type", "password", "pod_settings", "proxy_address", "type", "use_jobs",
+            "username"
+            ]
+    keymap = {"use_jobs": "useJobs"}
+    for key in keys:
+        if passed_keywords.get(key, None) is not None:
+            keyset = key
+            if key in keymap:
+                keyset = keymap.get(key)
+            returned[keyset] = passed_keywords.get(key)
+
+    return returned
+
+
+def aspm_application_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted ASPM application payload.
+
+    {
+        "name": "string",
+        "persistentSignatures": [
+            "string"
+        ]
+    }
+    """
+    returned = {}
+    keymap = {"persistent_signatures": "persistentSignatures"}
+    keys = ["name", "persistent_signatures"]
+    for key in keys:
+        if passed_keywords.get(key, None):
+            keyset = key
+            if key in keymap:
+                keyset = keymap.get(key)
+            returned[keyset] = passed_keywords.get(key)
+
+    return returned
diff --git a/src/falconpy/_payload/_container.py b/src/falconpy/_payload/_container.py
index af750174..14b3ab7e 100644
--- a/src/falconpy/_payload/_container.py
+++ b/src/falconpy/_payload/_container.py
@@ -251,3 +251,30 @@ def image_group_payload(passed_keywords: dict) -> dict:
         }
 
     return returned_payload
+
+
+def base_image_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted base image payload.
+
+    {
+        "base_images": [
+            {
+                "image_digest": "string",
+                "image_id": "string",
+                "registry": "string",
+                "repository": "string",
+                "tag": "string"
+            }
+        ]
+    }
+    """
+    returned = {}
+    returned["base_images"] = []
+    keys = ["image_digest", "image_id", "registry", "repository", "tag"]
+    item = {}
+    for key in keys:
+        if passed_keywords.get(key, None):
+            item[key] = passed_keywords.get(key)
+    returned["base_images"].append(item)
+
+    return returned
diff --git a/src/falconpy/_payload/_delivery_settings.py b/src/falconpy/_payload/_delivery_settings.py
new file mode 100644
index 00000000..b435e2d6
--- /dev/null
+++ b/src/falconpy/_payload/_delivery_settings.py
@@ -0,0 +1,61 @@
+"""Internal payload handling library - Delivery Settings.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+
+def delivery_settings_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted delivery settings creation payload.
+
+    {
+        "delivery_settings": [
+            {
+                "delivery_cadence": "string",
+                "delivery_type": "string"
+            }
+        ]
+    }
+    """
+    returned = {}
+    returned["delivery_settings"] = []
+    item = {}
+    keys = ["delivery_cadence", "delivery_type"]
+    for key in keys:
+        if passed_keywords.get(key, None):
+            item[key] = passed_keywords.get(key)
+    returned["delivery_settings"].append(item)
+
+    return returned
diff --git a/src/falconpy/_payload/_generic.py b/src/falconpy/_payload/_generic.py
index e0aa83c6..f3d75e4b 100644
--- a/src/falconpy/_payload/_generic.py
+++ b/src/falconpy/_payload/_generic.py
@@ -140,19 +140,21 @@ def exclusion_payload(passed_keywords: dict) -> dict:
         "groups": [
             "string"
         ],
+        "id": "string",
+        "is_descendent_process": boolean,
         "value": "string"
     }
     """
     returned_payload = {}
-    if passed_keywords.get("comment", None):
-        returned_payload["comment"] = passed_keywords.get("comment", None)
+    keys = ["comment", "id", "is_descendent_process", "value"]
+    for key in keys:
+        if passed_keywords.get(key, None):
+            returned_payload[key] = passed_keywords.get(key, None)
     group_list = passed_keywords.get("groups", None)
     if group_list:
         if isinstance(group_list, str):
             group_list = group_list.split(",")
         returned_payload["groups"] = group_list
-    if passed_keywords.get("value", None):
-        returned_payload["value"] = passed_keywords.get("value", None)
 
     return returned_payload
 
diff --git a/src/falconpy/_payload/_identity_protection.py b/src/falconpy/_payload/_identity_protection.py
new file mode 100644
index 00000000..ffbe2b11
--- /dev/null
+++ b/src/falconpy/_payload/_identity_protection.py
@@ -0,0 +1,140 @@
+"""Internal payload handling library - Identity Protection Payloads.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+
+
+def idp_policy_payload(passed_keywords: dict) -> dict:
+    """Craft a properly formatted Identity Protection rules creation payload.
+
+    {
+        "action": "string",
+        "activity": {
+            "accessType": {
+                "exclude": [
+                    "string"
+                ],
+                "include": [
+                    "string"
+                ]
+            },
+            "accessTypeCustom": {
+                "exclude": [
+                    "string"
+                ],
+                "include": [
+                    "string"
+                ]
+            }
+        },
+        "destination": {
+            "entityId": {
+                "exclude": [
+                    "string"
+                ],
+                "include": [
+                    "string"
+                ]
+            },
+            "groupMembership": {
+                "exclude": [
+                    "string"
+                ],
+                "include": [
+                    "string"
+                ]
+            }
+        },
+        "enabled": boolean,
+        "name": "string",
+        "simulationMode": boolean,
+        "sourceEndpoint": {
+            "entityId": {
+                "exclude": [
+                    "string"
+                ],
+                "include": [
+                    "string"
+                ]
+            },
+            "groupMembership": {
+                "exclude": [
+                    "string"
+                ],
+                "include": [
+                    "string"
+                ]
+            }
+        },
+        "sourceUser": {
+            "entityId": {
+                "exclude": [
+                    "string"
+                ],
+                "include": [
+                    "string"
+                ]
+            },
+            "groupMembership": {
+                "exclude": [
+                    "string"
+                ],
+                "include": [
+                    "string"
+                ]
+            }
+        },
+        "trigger": "string"
+    }
+    """
+    returned = {}
+    keys = ["action", "activity", "destination", "enabled", "name",
+            "simulationMode", "sourceEndpoint", "sourceUser", "trigger",
+            "simulation_mode", "source_endpoint", "source_user"
+            ]
+    keymap = {
+        "simulation_mode": "simulationMode",
+        "source_endpoint": "sourceEndpoint",
+        "source_user": "sourceUser"
+    }
+    for key in keys:
+        if passed_keywords.get(key, None):
+            keyset = key
+            if keymap.get(key, None):
+                keyset = keymap[key]
+            returned[keyset] = passed_keywords.get(key)
+
+    return returned
diff --git a/src/falconpy/_util/_functions.py b/src/falconpy/_util/_functions.py
index 783b3df8..fb4b35f9 100644
--- a/src/falconpy/_util/_functions.py
+++ b/src/falconpy/_util/_functions.py
@@ -640,7 +640,9 @@ def process_service_request(calling_object: ServiceClass,  # pylint: disable=R09
     expand_result -- Request expanded results output
     pythonic -- Pythonic responses
     collection_name -- Repository collection name [PATH] (Custom Objects API)
+    collection_version -- Repository version [PATH] (Custom Objects API)
     object_key -- Object Key [PATH] (Custom Objects API)
+    path_id -- ASPM ID path variable [PATH] (ASPM API)
     """
     # Log the operation ID if we have logging enabled.
     if calling_object.log:
@@ -718,10 +720,16 @@ def handle_path_variables(passed: dict, route_url: str):
         passed_object_key = passed.get("object_key", None)
         if passed_object_key:
             collect_args["object_key"] = str(passed_object_key)
+        passed_collection_version = passed.get("collection_version", None)
+        if passed_collection_version:
+            collect_args["collection_version"] = str(passed_collection_version)
         route_url = route_url.format(**collect_args)
     passed_vertex_type = passed.get("vertex_type", None)
     if passed_vertex_type:
         route_url = route_url.format(str(passed_vertex_type))
+    passed_id = passed.get("path_id", None)
+    if "aspm-api-gateway" in route_url and passed_id:
+        route_url = route_url.format(passed.get("path_id"))
 
     return route_url
 
diff --git a/src/falconpy/_util/_uber.py b/src/falconpy/_util/_uber.py
index bb8aa85e..94ef5cea 100644
--- a/src/falconpy/_util/_uber.py
+++ b/src/falconpy/_util/_uber.py
@@ -90,9 +90,21 @@ def scrub_target(oper: str, scrubbed: str, kwas: dict) -> str:
         "PutObject": ["collection_name", "object_key"],
         "DeleteObject": ["collection_name", "object_key"],
         "GetObjectMetadata": ["collection_name", "object_key"],
+        "ListObjectsByVersion": ["collection_name", "collection_version"],
+        "SearchObjectsByVersion": ["collection_name", "collection_version"],
+        "GetVersionedObject": ["collection_name", "object_key", "collection_version"],
+        "PutVersionedObject": ["collection_name", "object_key", "collection_version"],
+        "DeleteVersionedObject": ["collection_name", "object_key", "collection_version"],
+        "GetVersionedObjectMetadata": ["collection_name", "object_key", "collection_version"],
         "combined_summary_get": ["vertex_type"],
         "entities_vertices_get": ["vertex_type"],
-        "entities_vertices_getv2": ["vertex_type"]
+        "entities_vertices_getv2": ["vertex_type"],
+        "DeleteIntegration": ["id"],
+        "UpdateIntegration": ["id"],
+        "RunIntegrationTask": ["id"],
+        "DeleteIntegrationTask": ["id"],
+        "UpdateIntegrationTask": ["id"],
+        "DeleteExecutorNode": ["id"]
     }
     for field_value, field_names in field_mapping.items():
         if oper == field_value:  # Only perform replacements on mapped operation IDs.
diff --git a/src/falconpy/_version.py b/src/falconpy/_version.py
index 368f156e..25e078fa 100644
--- a/src/falconpy/_version.py
+++ b/src/falconpy/_version.py
@@ -35,7 +35,7 @@
 
 For more information, please refer to <https://unlicense.org>
 """
-_VERSION = '1.4.5'
+_VERSION = '1.4.6'
 _MAINTAINER = 'Joshua Hiller'
 _AUTHOR = 'CrowdStrike'
 _AUTHOR_EMAIL = 'falconpy@crowdstrike.com'
diff --git a/src/falconpy/alerts.py b/src/falconpy/alerts.py
index 3ca7e7ad..8c73c065 100644
--- a/src/falconpy/alerts.py
+++ b/src/falconpy/alerts.py
@@ -61,6 +61,9 @@ class Alerts(ServiceClass):
     def get_aggregate_alerts_v1(self, body: list = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Retrieve aggregates for Alerts across all CIDs.
 
+        DEPRECATED: Please use the get_aggregate_alerts_v2 method
+                    (PostAggregatesAlertsV2 operation) instead.
+
         Keyword arguments:
         body -- full body payload, not required when using other keywords.
                 [
@@ -315,6 +318,8 @@ def update_alerts_v2(self,
                          ) -> Dict[str, Union[int, dict]]:
         """Perform actions on alerts identified by detection ID(s) in request.
 
+        DEPRECATED: Please use the update_alerts_v3 (PatchEntitiesAlertsV3 operation) instead.
+
         Keyword arguments:
         action_parameters -- List of dictionaries containing action specific parameter settings.
         add_tag -- add a tag to 1 or more alert(s). String. Overridden by action_parameters.
@@ -394,13 +399,17 @@ def update_alerts_v3(self,
         Keyword arguments:
         action_parameters -- List of dictionaries containing action specific parameter settings.
         add_tag -- add a tag to 1 or more alert(s). String. Overridden by action_parameters.
-        append_comment -- appends new comment to existing comments. String.
+        append_comment -- Appends new comment to existing comments. String.
+                          Comments are displayed with the Alert in Falcon and are usually used to
+                          provide context or notes for other Falcon users. An Alert can have multiple
+                          comments over time.
                           Overridden by action_parameters.
         assign_to_name -- assign 1 or more alert(s) to a user identified by user name. String.
                           Overridden by action_parameters.
         assign_to_user_id -- assign 1 or more alert(s) to a user identified by user id
                              (eg: user1@example.com). String. Overridden by action_parameters.
         assign_to_uuid -- assign 1 or more alert(s) to a user identified by UUID. String.
+                          Example: '00000000-0000-0000-0000-000000000000'
                           Overridden by action_parameters.
         body -- full body payload, not required when using other keywords.
                 {
@@ -414,7 +423,7 @@ def update_alerts_v3(self,
                         }
                     ]
                 }
-        composite_ids -- ID(s) of the alert to update. String or list of strings.
+        composite_ids -- CompositeID(s) of the alert to update. String or list of strings.
         include_hidden -- Allows previously hidden alerts to be retrieved.
         new_behavior_processed -- adds a newly processed behavior to 1 or more alert(s). String.
                                   Overridden by action_parameters.
@@ -426,8 +435,10 @@ def update_alerts_v3(self,
         show_in_ui -- shows 1 or more alert(s) on UI if set to true, hides otherwise.
                       An empty/nil value is also valid. Overridden by action_parameters.
         unassign -- unassign an previously assigned user from 1 or more alert(s).
+                    Unassign Alert clears out the assigned user UUID, user ID, and username.
                     The value passed to this action is ignored. Overridden by action_parameters.
         update_status -- update status for 1 or more alert(s). String.
+                         Allowed values: (new, in_progress, reopened, closed)
                          Overridden by action_parameters.
 
         Arguments: When not specified, the first argument to this method is assumed to be 'ids'.
@@ -465,6 +476,8 @@ def update_alerts_v3(self,
     def get_alerts_v1(self, *args, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Retrieve all Alerts given their IDs.
 
+        DEPRECATED: Please use the get_alerts_v2 method (PostEntitiesAlertsV1 operation) instead.
+
         Keyword arguments:
         body -- full body payload, not required when ids keyword is provided.
                 {
@@ -549,6 +562,8 @@ def get_alerts_v2(self,
     def query_alerts_v1(self, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Search for detection IDs that match a given query.
 
+        DEPRECATED: Please use the query_alerts_v2 method (GetQueriesAlertsV2 operation) intead.
+
         Keyword arguments:
         filter -- The filter expression that should be used to limit the results. FQL syntax.
 
diff --git a/src/falconpy/api_integrations.py b/src/falconpy/api_integrations.py
index fe7afeca..4b436064 100644
--- a/src/falconpy/api_integrations.py
+++ b/src/falconpy/api_integrations.py
@@ -85,6 +85,71 @@ def get_plugin_configs(self: object, parameters: dict = None, **kwargs) -> Dict[
             params=parameters
             )
 
+    @force_default(defaults=["body"], default_types=["dict"])
+    def execute_command_proxy(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Execute a command and proxy the response directly.
+
+        Keyword arguments:
+        body -- Full body payload as a dictionary. Not required if other keywords are provided.
+                {
+                    "resources": [
+                        {
+                        "config_auth_type": "string",
+                        "config_id": "string",
+                        "definition_id": "string",
+                        "id": "string",
+                        "operation_id": "string",
+                        "request": {
+                            "data": "string",
+                            "params": {
+                                "cookie": {},
+                                "header": {},
+                                "path": {},
+                                "query": {}
+                            },
+                            "x-www-form-urlencoded": {}
+                        },
+                        "version": integer
+                        }
+                    ]
+                }
+        config_auth_type -- Configuration authorization type for plugin to execute.
+                            Only application for security scheme plugins. If not
+                            provided, execution will use the default authorization type. String.
+        config_id -- Configuration ID. If omitted, the oldest configuration ID will be used. String.
+        cookie -- Request cookies. Part of the request parameters dictionary. Dictionary.
+        data -- Request data. String.
+        definition_id -- ID of the definition containing the operation to execute. String.
+        header -- Request headers. Part of the request parameters dictionary. Dictionary.
+        id -- ID of the specific plugin to execute provided in "definition_name.operation_name"
+              format. String.
+        operation_id -- The specific operation to execute. String.
+        path -- Request path. Part of the request parameters dictionary. Dictionary.
+        params -- Request parameters. Not required if using other request parameter keywords.
+                  Can be overridden by values specified using individual keywords. Dictionary.
+        query -- Request query. Part of the request parameters dictionary. Dictionary.
+        version -- The version of the definition to execute. Integer.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/api-integrations/ExecuteCommandProxy
+        """
+        if not body:
+            body = api_plugin_command_payload(kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ExecuteCommandProxy",
+            keywords=kwargs,
+            body=body
+            )
+
     @force_default(defaults=["body"], default_types=["dict"])
     def execute_command(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Execute a command.
@@ -116,7 +181,6 @@ def execute_command(self: object, body: dict = None, **kwargs) -> Dict[str, Unio
         operation_id -- The specific operation to execute. String.
         description -- Command description. String.
         version -- The version of the definition to execute. Integer.
-        parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         This method only supports keywords for providing arguments.
 
@@ -142,4 +206,5 @@ def execute_command(self: object, body: dict = None, **kwargs) -> Dict[str, Unio
     # do not conform to snake_case / PEP8 and are defined here for
     # backwards compatibility / ease of use purposes.
     GetCombinedPluginConfigs = get_plugin_configs
+    ExecuteCommandProxy = execute_command_proxy
     ExecuteCommand = execute_command
diff --git a/src/falconpy/aspm.py b/src/falconpy/aspm.py
new file mode 100644
index 00000000..c3e640db
--- /dev/null
+++ b/src/falconpy/aspm.py
@@ -0,0 +1,1811 @@
+"""CrowdStrike Falcon Aspm API interface class.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+# pylint: disable=C0302
+from typing import Dict, Union
+from ._util import force_default, process_service_request, generate_error_result
+from ._payload import (
+    aspm_delete_tag_payload,
+    aspm_violations_search_payload,
+    aspm_get_services_count_payload,
+    aspm_query_payload,
+    aspm_integration_payload,
+    aspm_integration_task_payload,
+    aspm_node_payload,
+    aspm_application_payload,
+    aspm_update_tag_payload
+    )
+from ._service_class import ServiceClass
+from ._endpoint._aspm import _aspm_endpoints as Endpoints
+
+
+class ASPM(ServiceClass):
+    """The only requirement to instantiate an instance of this class is one of the following.
+
+    - a valid client_id and client_secret provided as keywords.
+    - a credential dictionary with client_id and client_secret containing valid API credentials
+      {
+          "client_id": "CLIENT_ID_HERE",
+          "client_secret": "CLIENT_SECRET_HERE"
+      }
+    - a previously-authenticated instance of the authentication service class (oauth2.py)
+    - a valid token provided by the authentication service class (oauth2.py)
+    """
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def update_business_applications(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Create or Update Business Applications.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "name": "string",
+                    "persistentSignatures": [
+                        "string"
+                    ]
+                }
+        name -- Application name. String.
+        persistent_signatures -- Signatures. List of strings.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: PUT
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/UpsertBusinessApplications
+        """
+        if not body:
+            body = aspm_application_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="UpsertBusinessApplications",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_executor_nodes(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get all the relay nodes.
+
+        Keyword arguments:
+        node_type -- Node type. String.
+        integration_type -- Integration type. String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/GetExecutorNodes
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetExecutorNodes",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def update_executor_node(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Update an existing relay node.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "additional_header": "string",
+                    "current_aws_arn": "string",
+                    "dashboard_url": "string",
+                    "id": integer,
+                    "last_health_check": integer,
+                    "name": "string",
+                    "node_type": "string",
+                    "password": "string",
+                    "pod_settings": {
+                        "imageAddress": "string",
+                        "imagePullSecrets": [
+                            "string"
+                        ],
+                        "podLabels": [
+                            {
+                                "key": "string",
+                                "value": "string"
+                            }
+                        ]
+                    },
+                    "proxy_address": "string",
+                    "type": "string",
+                    "useJobs": boolean,
+                    "username": "string"
+                }
+        current_aws_arn --
+        dashboard_url --
+        id --
+        last_health_check --
+        name --
+        node_type --
+        password --
+        pod_settings --
+        proxy_address --
+        type --
+        use_jobs --
+        username --
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: PUT
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/UpdateExecutorNode
+        """
+        if not body:
+            body = aspm_node_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="UpdateExecutorNode",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def create_executor_node(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Create a new relay node.
+
+        Keyword arguments:
+        additional_header --
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "additional_header": "string",
+                    "current_aws_arn": "string",
+                    "dashboard_url": "string",
+                    "id": integer,
+                    "last_health_check": integer,
+                    "name": "string",
+                    "node_type": "string",
+                    "password": "string",
+                    "pod_settings": {
+                        "imageAddress": "string",
+                        "imagePullSecrets": [
+                            "string"
+                        ],
+                        "podLabels": [
+                            {
+                                "key": "string",
+                                "value": "string"
+                            }
+                        ]
+                    },
+                    "proxy_address": "string",
+                    "type": "string",
+                    "useJobs": boolean,
+                    "username": "string"
+                }
+        current_aws_arn --
+        dashboard_url --
+        id --
+        last_health_check --
+        name --
+        node_type --
+        password --
+        pod_settings --
+        proxy_address --
+        type --
+        use_jobs --
+        username --
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/CreateExecutorNode
+        """
+        if not body:
+            body = aspm_node_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="CreateExecutorNode",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def delete_node(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete a relay node.
+
+        Keyword arguments:
+        ID -- ID of the node to remove. Integer.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/DeleteExecutorNode
+        """
+        target_id = kwargs.get("id", parameters.get("id", None))
+        if not target_id:
+            return generate_error_result(
+                message="You must provide the id keyword or parameter in order to use this operation.",
+                code=400
+                )
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="DeleteExecutorNode",
+            path_id=target_id
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_integration_tasks(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get all integration tasks.
+
+        Keyword arguments:
+        integration_task_type -- Integration task type. Integer.
+        category -- Integration category. String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/GetIntegrationTasks
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetIntegrationTasks",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def create_integration_task(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Create new integration task.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "integration_task": {
+                        "access_token": "string",
+                        "additional_header": "string",
+                        "business_application": "string",
+                        "data": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "integration": {
+                        "data": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "integration_type": {
+                            "configured": true,
+                            "display_name": "string",
+                            "enabled": true,
+                            "id": 0,
+                            "name": "string"
+                        },
+                        "name": "string",
+                        "node": {
+                            "additional_header": "string",
+                            "current_aws_arn": "string",
+                            "dashboard_url": "string",
+                            "id": 0,
+                            "last_health_check": 0,
+                            "name": "string",
+                            "node_type": "string",
+                            "password": "string",
+                            "pod_settings": {
+                            "imageAddress": "string",
+                            "imagePullSecrets": [
+                                "string"
+                            ],
+                            "podLabels": [
+                                {
+                                "key": "string",
+                                "value": "string"
+                                }
+                            ]
+                            },
+                            "proxy_address": "string",
+                            "type": "string",
+                            "useJobs": true,
+                            "username": "string"
+                        },
+                        "type": {
+                            "configured": true,
+                            "display_name": "string",
+                            "enabled": true,
+                            "id": 0,
+                            "name": "string"
+                        },
+                        "update_time": 0
+                        },
+                        "integration_task_type": {
+                        "category": "string",
+                        "display_name": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "name": "string",
+                        "required_integration_types": [
+                            {
+                            "configured": true,
+                            "display_name": "string",
+                            "enabled": true,
+                            "id": 0,
+                            "name": "string"
+                            }
+                        ]
+                        },
+                        "latest_task_run": {
+                        "create_time": {
+                            "nanos": 0,
+                            "seconds": 0
+                        },
+                        "events": [
+                            {
+                            "FlatData": {
+                                "additionalProp1": "string",
+                                "additionalProp2": "string",
+                                "additionalProp3": "string"
+                            },
+                            "additional_data": "string",
+                            "data": {
+                                "additional_info": "string",
+                                "aws": {
+                                "accountArn": "string",
+                                "region": "string"
+                                },
+                                "azureSite": {
+                                "location": "string",
+                                "resourceGroup": "string",
+                                "siteId": "string",
+                                "siteKind": "string",
+                                "siteName": "string",
+                                "subscriptionId": "string"
+                                },
+                                "azureVm": {
+                                "id": "string",
+                                "region": "string",
+                                "resourceGroup": "string",
+                                "subscriptionId": "string",
+                                "vmName": "string"
+                                },
+                                "cloud_function": {
+                                "function_name": "string"
+                                },
+                                "crowdstrike_cloud_security": {
+                                "baseUrl": "string",
+                                "clientId": "string",
+                                "cloudProvider": "string",
+                                "iomID": "string",
+                                "policyId": 0,
+                                "resourceId": "string",
+                                "resourceType": "string"
+                                },
+                                "ec2": {
+                                "instance_id": "string",
+                                "instance_name": "string"
+                                },
+                                "ecs": {
+                                "clusterName": "string",
+                                "collectionMethod": 0,
+                                "resourceArn": "string",
+                                "resourceName": "string",
+                                "resourceType": "string"
+                                },
+                                "gcp": {
+                                "project": "string",
+                                "region": "string"
+                                },
+                                "host": {
+                                "address": "string"
+                                },
+                                "k8s": {
+                                "container": "string",
+                                "namespace": "string",
+                                "pod_name": "string"
+                                },
+                                "lambda": {
+                                "lambdaArn": "string",
+                                "lambdaName": "string"
+                                },
+                                "remedy": {
+                                "content": "string",
+                                "url": "string"
+                                },
+                                "snyk": {
+                                "apiEndpointUrl": "string",
+                                "appEndpointUrl": "string",
+                                "groupId": "string"
+                                },
+                                "sonatype": {
+                                "CVEId": "string",
+                                "applicationPublicId": "string",
+                                "componentNameVersion": "string",
+                                "iqServerUrl": "string"
+                                }
+                            },
+                            "flat_fields": [
+                                "string"
+                            ],
+                            "id": 0,
+                            "message": "string",
+                            "object": "string",
+                            "object_type": "string",
+                            "send_time": {
+                                "nanos": 0,
+                                "seconds": 0
+                            },
+                            "status": 0
+                            }
+                        ],
+                        "id": 0,
+                        "latest_event": {
+                            "FlatData": {
+                            "additionalProp1": "string",
+                            "additionalProp2": "string",
+                            "additionalProp3": "string"
+                            },
+                            "additional_data": "string",
+                            "data": {
+                            "additional_info": "string",
+                            "aws": {
+                                "accountArn": "string",
+                                "region": "string"
+                            },
+                            "azureSite": {
+                                "location": "string",
+                                "resourceGroup": "string",
+                                "siteId": "string",
+                                "siteKind": "string",
+                                "siteName": "string",
+                                "subscriptionId": "string"
+                            },
+                            "azureVm": {
+                                "id": "string",
+                                "region": "string",
+                                "resourceGroup": "string",
+                                "subscriptionId": "string",
+                                "vmName": "string"
+                            },
+                            "cloud_function": {
+                                "function_name": "string"
+                            },
+                            "crowdstrike_cloud_security": {
+                                "baseUrl": "string",
+                                "clientId": "string",
+                                "cloudProvider": "string",
+                                "iomID": "string",
+                                "policyId": 0,
+                                "resourceId": "string",
+                                "resourceType": "string"
+                            },
+                            "ec2": {
+                                "instance_id": "string",
+                                "instance_name": "string"
+                            },
+                            "ecs": {
+                                "clusterName": "string",
+                                "collectionMethod": 0,
+                                "resourceArn": "string",
+                                "resourceName": "string",
+                                "resourceType": "string"
+                            },
+                            "gcp": {
+                                "project": "string",
+                                "region": "string"
+                            },
+                            "host": {
+                                "address": "string"
+                            },
+                            "k8s": {
+                                "container": "string",
+                                "namespace": "string",
+                                "pod_name": "string"
+                            },
+                            "lambda": {
+                                "lambdaArn": "string",
+                                "lambdaName": "string"
+                            },
+                            "remedy": {
+                                "content": "string",
+                                "url": "string"
+                            },
+                            "snyk": {
+                                "apiEndpointUrl": "string",
+                                "appEndpointUrl": "string",
+                                "groupId": "string"
+                            },
+                            "sonatype": {
+                                "CVEId": "string",
+                                "applicationPublicId": "string",
+                                "componentNameVersion": "string",
+                                "iqServerUrl": "string"
+                            }
+                            },
+                            "flat_fields": [
+                            "string"
+                            ],
+                            "id": 0,
+                            "message": "string",
+                            "object": "string",
+                            "object_type": "string",
+                            "send_time": {
+                            "nanos": 0,
+                            "seconds": 0
+                            },
+                            "status": 0
+                        },
+                        "metadata": {
+                            "collected_objects": 0,
+                            "end_time": {
+                            "nanos": 0,
+                            "seconds": 0
+                            },
+                            "integration_task_id": 0,
+                            "integration_task_name": "string",
+                            "integration_task_type": {
+                            "category": "string",
+                            "display_name": "string",
+                            "enabled": true,
+                            "id": 0,
+                            "name": "string",
+                            "required_integration_types": [
+                                {
+                                "configured": true,
+                                "display_name": "string",
+                                "enabled": true,
+                                "id": 0,
+                                "name": "string"
+                                }
+                            ]
+                            },
+                            "start_time": {
+                            "nanos": 0,
+                            "seconds": 0
+                            },
+                            "total_objects": 0
+                        },
+                        "progress": 0,
+                        "scheduled": true,
+                        "trace_uuid": "string"
+                        },
+                        "name": "string",
+                        "next_run": {
+                        "nanos": 0,
+                        "seconds": 0
+                        },
+                        "progress": 0,
+                        "schedule": {
+                        "every": 0,
+                        "every_unit": 0,
+                        "hour": 0,
+                        "minute": 0,
+                        "startTimeTimezoneOffsetMinutes": 0,
+                        "start_time": {
+                            "nanos": 0,
+                            "seconds": 0
+                        },
+                        "timezone": 0,
+                        "weekdays": [
+                            0
+                        ]
+                        },
+                        "schedule_every_unit_display_name": "string",
+                        "trigger": "string",
+                        "type": {
+                        "category": "string",
+                        "display_name": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "name": "string",
+                        "required_integration_types": [
+                            {
+                            "configured": true,
+                            "display_name": "string",
+                            "enabled": true,
+                            "id": 0,
+                            "name": "string"
+                            }
+                        ]
+                        }
+                    }
+                }
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/CreateIntegrationTask
+        """
+        if not body:
+            body = aspm_integration_task_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="CreateIntegrationTask",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["parameters", "body"], default_types=["dict", "dict"])
+    def update_integration_task(self: object,
+                                body: dict = None,
+                                parameters: dict = None,
+                                **kwargs
+                                ) -> Dict[str, Union[int, dict]]:
+        """Update an existing integration task by its ID.
+
+        Keyword arguments:
+        ID -- ID of the integration task to update. Integer.
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                "integration_task": {
+                    "access_token": "string",
+                    "additional_header": "string",
+                    "business_application": "string",
+                    "data": "string",
+                    "enabled": true,
+                    "id": 0,
+                    "integration": {
+                    "data": "string",
+                    "enabled": true,
+                    "id": 0,
+                    "integration_type": {
+                        "configured": true,
+                        "display_name": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "name": "string"
+                    },
+                    "name": "string",
+                    "node": {
+                        "additional_header": "string",
+                        "current_aws_arn": "string",
+                        "dashboard_url": "string",
+                        "id": 0,
+                        "last_health_check": 0,
+                        "name": "string",
+                        "node_type": "string",
+                        "password": "string",
+                        "pod_settings": {
+                        "imageAddress": "string",
+                        "imagePullSecrets": [
+                            "string"
+                        ],
+                        "podLabels": [
+                            {
+                            "key": "string",
+                            "value": "string"
+                            }
+                        ]
+                        },
+                        "proxy_address": "string",
+                        "type": "string",
+                        "useJobs": true,
+                        "username": "string"
+                    },
+                    "type": {
+                        "configured": true,
+                        "display_name": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "name": "string"
+                    },
+                    "update_time": 0
+                    },
+                    "integration_task_type": {
+                    "category": "string",
+                    "display_name": "string",
+                    "enabled": true,
+                    "id": 0,
+                    "name": "string",
+                    "required_integration_types": [
+                        {
+                        "configured": true,
+                        "display_name": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "name": "string"
+                        }
+                    ]
+                    },
+                    "latest_task_run": {
+                    "create_time": {
+                        "nanos": 0,
+                        "seconds": 0
+                    },
+                    "events": [
+                        {
+                        "FlatData": {
+                            "additionalProp1": "string",
+                            "additionalProp2": "string",
+                            "additionalProp3": "string"
+                        },
+                        "additional_data": "string",
+                        "data": {
+                            "additional_info": "string",
+                            "aws": {
+                            "accountArn": "string",
+                            "region": "string"
+                            },
+                            "azureSite": {
+                            "location": "string",
+                            "resourceGroup": "string",
+                            "siteId": "string",
+                            "siteKind": "string",
+                            "siteName": "string",
+                            "subscriptionId": "string"
+                            },
+                            "azureVm": {
+                            "id": "string",
+                            "region": "string",
+                            "resourceGroup": "string",
+                            "subscriptionId": "string",
+                            "vmName": "string"
+                            },
+                            "cloud_function": {
+                            "function_name": "string"
+                            },
+                            "crowdstrike_cloud_security": {
+                            "baseUrl": "string",
+                            "clientId": "string",
+                            "cloudProvider": "string",
+                            "iomID": "string",
+                            "policyId": 0,
+                            "resourceId": "string",
+                            "resourceType": "string"
+                            },
+                            "ec2": {
+                            "instance_id": "string",
+                            "instance_name": "string"
+                            },
+                            "ecs": {
+                            "clusterName": "string",
+                            "collectionMethod": 0,
+                            "resourceArn": "string",
+                            "resourceName": "string",
+                            "resourceType": "string"
+                            },
+                            "gcp": {
+                            "project": "string",
+                            "region": "string"
+                            },
+                            "host": {
+                            "address": "string"
+                            },
+                            "k8s": {
+                            "container": "string",
+                            "namespace": "string",
+                            "pod_name": "string"
+                            },
+                            "lambda": {
+                            "lambdaArn": "string",
+                            "lambdaName": "string"
+                            },
+                            "remedy": {
+                            "content": "string",
+                            "url": "string"
+                            },
+                            "snyk": {
+                            "apiEndpointUrl": "string",
+                            "appEndpointUrl": "string",
+                            "groupId": "string"
+                            },
+                            "sonatype": {
+                            "CVEId": "string",
+                            "applicationPublicId": "string",
+                            "componentNameVersion": "string",
+                            "iqServerUrl": "string"
+                            }
+                        },
+                        "flat_fields": [
+                            "string"
+                        ],
+                        "id": 0,
+                        "message": "string",
+                        "object": "string",
+                        "object_type": "string",
+                        "send_time": {
+                            "nanos": 0,
+                            "seconds": 0
+                        },
+                        "status": 0
+                        }
+                    ],
+                    "id": 0,
+                    "latest_event": {
+                        "FlatData": {
+                        "additionalProp1": "string",
+                        "additionalProp2": "string",
+                        "additionalProp3": "string"
+                        },
+                        "additional_data": "string",
+                        "data": {
+                        "additional_info": "string",
+                        "aws": {
+                            "accountArn": "string",
+                            "region": "string"
+                        },
+                        "azureSite": {
+                            "location": "string",
+                            "resourceGroup": "string",
+                            "siteId": "string",
+                            "siteKind": "string",
+                            "siteName": "string",
+                            "subscriptionId": "string"
+                        },
+                        "azureVm": {
+                            "id": "string",
+                            "region": "string",
+                            "resourceGroup": "string",
+                            "subscriptionId": "string",
+                            "vmName": "string"
+                        },
+                        "cloud_function": {
+                            "function_name": "string"
+                        },
+                        "crowdstrike_cloud_security": {
+                            "baseUrl": "string",
+                            "clientId": "string",
+                            "cloudProvider": "string",
+                            "iomID": "string",
+                            "policyId": 0,
+                            "resourceId": "string",
+                            "resourceType": "string"
+                        },
+                        "ec2": {
+                            "instance_id": "string",
+                            "instance_name": "string"
+                        },
+                        "ecs": {
+                            "clusterName": "string",
+                            "collectionMethod": 0,
+                            "resourceArn": "string",
+                            "resourceName": "string",
+                            "resourceType": "string"
+                        },
+                        "gcp": {
+                            "project": "string",
+                            "region": "string"
+                        },
+                        "host": {
+                            "address": "string"
+                        },
+                        "k8s": {
+                            "container": "string",
+                            "namespace": "string",
+                            "pod_name": "string"
+                        },
+                        "lambda": {
+                            "lambdaArn": "string",
+                            "lambdaName": "string"
+                        },
+                        "remedy": {
+                            "content": "string",
+                            "url": "string"
+                        },
+                        "snyk": {
+                            "apiEndpointUrl": "string",
+                            "appEndpointUrl": "string",
+                            "groupId": "string"
+                        },
+                        "sonatype": {
+                            "CVEId": "string",
+                            "applicationPublicId": "string",
+                            "componentNameVersion": "string",
+                            "iqServerUrl": "string"
+                        }
+                        },
+                        "flat_fields": [
+                        "string"
+                        ],
+                        "id": 0,
+                        "message": "string",
+                        "object": "string",
+                        "object_type": "string",
+                        "send_time": {
+                        "nanos": 0,
+                        "seconds": 0
+                        },
+                        "status": 0
+                    },
+                    "metadata": {
+                        "collected_objects": 0,
+                        "end_time": {
+                        "nanos": 0,
+                        "seconds": 0
+                        },
+                        "integration_task_id": 0,
+                        "integration_task_name": "string",
+                        "integration_task_type": {
+                        "category": "string",
+                        "display_name": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "name": "string",
+                        "required_integration_types": [
+                            {
+                            "configured": true,
+                            "display_name": "string",
+                            "enabled": true,
+                            "id": 0,
+                            "name": "string"
+                            }
+                        ]
+                        },
+                        "start_time": {
+                        "nanos": 0,
+                        "seconds": 0
+                        },
+                        "total_objects": 0
+                    },
+                    "progress": 0,
+                    "scheduled": true,
+                    "trace_uuid": "string"
+                    },
+                    "name": "string",
+                    "next_run": {
+                    "nanos": 0,
+                    "seconds": 0
+                    },
+                    "progress": 0,
+                    "schedule": {
+                    "every": 0,
+                    "every_unit": 0,
+                    "hour": 0,
+                    "minute": 0,
+                    "startTimeTimezoneOffsetMinutes": 0,
+                    "start_time": {
+                        "nanos": 0,
+                        "seconds": 0
+                    },
+                    "timezone": 0,
+                    "weekdays": [
+                        0
+                    ]
+                    },
+                    "schedule_every_unit_display_name": "string",
+                    "trigger": "string",
+                    "type": {
+                    "category": "string",
+                    "display_name": "string",
+                    "enabled": true,
+                    "id": 0,
+                    "name": "string",
+                    "required_integration_types": [
+                        {
+                        "configured": true,
+                        "display_name": "string",
+                        "enabled": true,
+                        "id": 0,
+                        "name": "string"
+                        }
+                    ]
+                    }
+                }
+                }
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: PUT
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/UpdateIntegrationTask
+        """
+        target_id = kwargs.get("id", parameters.get("id", None))
+        if not target_id:
+            return generate_error_result(
+                message="You must provide the id keyword or parameter in order to use this operation.",
+                code=400
+                )
+
+        if not body:
+            body = aspm_integration_task_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="UpdateIntegrationTask",
+            keywords=kwargs,
+            params=parameters,
+            body=body,
+            path_id=target_id
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def delete_integration_task(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete an existing integration task by its ID.
+
+        Keyword arguments:
+        ID -- ID of the integration task to remove. Integer.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/DeleteIntegrationTask
+        """
+        target_id = kwargs.get("id", parameters.get("id", None))
+        if not target_id:
+            return generate_error_result(
+                message="You must provide the id keyword or parameter in order to use this operation.",
+                code=400
+                )
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="DeleteIntegrationTask",
+            path_id=target_id
+            )
+
+    @force_default(defaults=["parameters", "body"], default_types=["dict", "dict"])
+    def run_integration_task(self: object,
+                             body: dict = None,
+                             parameters: dict = None,
+                             **kwargs
+                             ) -> Dict[str, Union[int, dict]]:
+        """Run an integration task by its ID.
+
+        Keyword arguments:
+        access_token -- Integration access token. String.
+        body -- Full body payload dictionary in JSON format. Not required if using other keywords.
+                {
+                    "access_token": "string",
+                    "category": "string",
+                    "data": "string",
+                    "override": boolean,
+                    "scheduled": boolean,
+                    "task_id": integer
+                }
+        category -- Integration task category. String.
+        data -- Integration task data. String.
+        ID -- ID of the integration task to execute. Integer.
+        override -- Override previous task. Boolean.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+        scheduled -- Schedule task. Boolean.
+        task_id -- Integration task ID. Integer.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/RunIntegrationTask
+        """
+        target_id = kwargs.get("id", parameters.get("id", None))
+        if not target_id:
+            return generate_error_result(
+                message="You must provide the id keyword or parameter in order to use this operation.",
+                code=400
+                )
+
+        if not body:
+            body = aspm_integration_task_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="RunIntegrationTask",
+            keywords=kwargs,
+            body=body,
+            params=parameters,
+            path_id=target_id
+            )
+
+    def get_integration_types(self: object) -> Dict[str, Union[int, dict]]:
+        """Get all the integration types.
+
+        Keyword arguments:
+        This operation does not accept keyword arguments.
+
+        Arguments:
+        This operation does not accept arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/GetIntegrationTypes
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetIntegrationTypes"
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_integrations(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get a list of all the integrations.
+
+        Keyword arguments:
+        integration_type -- Type of integration. String.
+        category -- Integration category. String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/GetIntegrations
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetIntegrations",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def create_integration(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Create a new integration.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "integration": {
+                        "data": "string",
+                        "enabled": boolean,
+                        "id": integer,
+                        "integration_type": {
+                            "configured": boolean,
+                            "display_name": "string",
+                            "enabled": boolean,
+                            "id": integer,
+                            "name": "string"
+                        },
+                        "name": "string",
+                        "node": {
+                            "additional_header": "string",
+                            "current_aws_arn": "string",
+                            "dashboard_url": "string",
+                            "id": integer,
+                            "last_health_check": integer,
+                            "name": "string",
+                            "node_type": "string",
+                            "password": "string",
+                            "pod_settings": {
+                                "imageAddress": "string",
+                                "imagePullSecrets": [
+                                    "string"
+                                ],
+                                "podLabels": [
+                                    {
+                                        "key": "string",
+                                        "value": "string"
+                                    }
+                                ]
+                            },
+                            "proxy_address": "string",
+                            "type": "string",
+                            "useJobs": boolean,
+                            "username": "string"
+                        },
+                        "type": {
+                            "configured": boolean,
+                            "display_name": "string",
+                            "enabled": boolean,
+                            "id": integer,
+                            "name": "string"
+                        },
+                        "update_time": integer
+                    }
+                }
+        integration -- Integration details. Dictionary.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/CreateIntegration
+        """
+        if not body:
+            body = aspm_integration_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="CreateIntegration",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["body", "parameters"], default_types=["dict", "dict"])
+    def update_integration(self: object, body: dict = None, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Update an existing integration by its ID.
+
+        Keyword arguments:
+        id -- ID of the integration to update. Integer.
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "integration": {
+                        "data": "string",
+                        "enabled": boolean,
+                        "id": integer,
+                        "integration_type": {
+                            "configured": boolean,
+                            "display_name": "string",
+                            "enabled": boolean,
+                            "id": integer,
+                            "name": "string"
+                        },
+                        "name": "string",
+                        "node": {
+                            "additional_header": "string",
+                            "current_aws_arn": "string",
+                            "dashboard_url": "string",
+                            "id": integer,
+                            "last_health_check": integer,
+                            "name": "string",
+                            "node_type": "string",
+                            "password": "string",
+                            "pod_settings": {
+                                "imageAddress": "string",
+                                "imagePullSecrets": [
+                                    "string"
+                                ],
+                                "podLabels": [
+                                    {
+                                        "key": "string",
+                                        "value": "string"
+                                    }
+                                ]
+                            },
+                            "proxy_address": "string",
+                            "type": "string",
+                            "useJobs": boolean,
+                            "username": "string"
+                        },
+                        "type": {
+                            "configured": boolean,
+                            "display_name": "string",
+                            "enabled": boolean,
+                            "id": integer,
+                            "name": "string"
+                        },
+                        "update_time": integer
+                    },
+                    "overwriteFields": [
+                        "string"
+                    ]
+                }
+        integration -- Integration details. Dictionary.
+        overwrite_fields -- Fields to overwrite. List of strings.
+        parameters -- Full parameters payload dictionary. Not required if using the 'id' keyword.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: PUT
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/UpdateIntegration
+        """
+        target_id = kwargs.get("id", parameters.get("id", None))
+        if not target_id:
+            return generate_error_result(
+                message="You must provide the id keyword or parameter in order to use this operation.",
+                code=400
+                )
+
+        if not body:
+            body = aspm_integration_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="UpdateIntegration",
+            body=body,
+            path_id=target_id
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def delete_integration(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete an existing integration by its ID.
+
+        Keyword arguments:
+        id -- ID of the integration to remove. Integer.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/DeleteIntegration
+        """
+        target_id = kwargs.get("id", parameters.get("id", None))
+        if not target_id:
+            return generate_error_result(
+                message="You must provide the id keyword or parameter in order to use this operation.",
+                code=400
+                )
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="DeleteIntegration",
+            path_id=target_id
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def execute_query(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Execute a query. The syntax used is identical to that of the query page.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "paginate": {
+                        "direction": "string",
+                        "limit": integer,
+                        "offset": integer,
+                        "orderBy": [
+                            "string"
+                        ]
+                    },
+                    "query": "string",
+                    "selectFields": {
+                        "fields": [
+                            "string"
+                        ],
+                        "serviceFields": [
+                            "string"
+                        ],
+                        "withoutServices": boolean
+                    },
+                    "timestamp": integer
+                }
+        paginate -- Pagination detail. Dictionary.
+        query -- Query to perform. String.
+        select_fields -- Field selection detail. Dictionary.
+                         Dictionary contents:
+                         fields - For filtering relevant fields only.
+                         withoutServices - Default is set to True,
+                            you will not receive information about the services.
+                            If you want to get the relevant service, set to False.
+                         serviceFields - For filtering relevant fields of the service
+                                         (if you chose to get it)
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+        timestamp -- Timestamp. Integer.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/ExecuteQuery
+        """
+        if not body:
+            body = aspm_query_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ExecuteQuery",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_servicenow_deployments(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve ServiceNow deployments.
+
+        Keyword arguments:
+        ql_filters -- Query filter. String.
+        limit -- Maximum number of records to return. Integer.
+        offset -- Starting position of return records. Integer.
+        orderBy -- Sort order field. String.
+        direction -- Sort direction. String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/ServiceNowGetDeployments
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ServiceNowGetDeployments",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_servicenow_services(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve ServiceNow services.
+
+        Keyword arguments:
+        ql_filters -- Query filter. String.
+        limit -- Maximum number of records to return. Integer.
+        offset -- Starting position of return records. Integer.
+        orderBy -- Sort order field. String.
+        direction -- Sort direction. String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/ServiceNowGetServices
+        """
+        if kwargs.get("order_by", None):
+            kwargs["orderBy"] = kwargs.get("order_by")
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ServiceNowGetServices",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def get_services_count(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get the total amount of existing services.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "deploymentTupleFilters": [
+                        {
+                        "excludes": [
+                            {
+                                "key": "string",
+                                "value": "string"
+                            }
+                        ],
+                        "includes": [
+                            {
+                                "key": "string",
+                                "value": "string"
+                            }
+                        ]
+                        }
+                    ],
+                    "nestingLevel": integer,
+                    "onlyCount": boolean,
+                    "optionalTime": integer,
+                    "pagination": {
+                        "direction": "string",
+                        "limit": integer,
+                        "offset": integer,
+                        "order_by": [
+                            "string"
+                        ]
+                    },
+                    "persistentSignatures": [
+                        "string"
+                    ],
+                    "qlFilters": "string",
+                    "relatedEntities": [
+                        {
+                            "aggregation_type": integer,
+                            "entity_type": integer,
+                            "filters": {
+                                "include_du_services": boolean,
+                                "only_du_types": boolean,
+                                "only_get_brokers": boolean
+                            },
+                            "groupByFields": {
+                                "fields": [
+                                    "string"
+                                ]
+                            }
+                        }
+                    ],
+                    "revisionId": integer,
+                    "rolesSignature": "string"
+                }
+        deployment_tuple_filters --
+        nesting-level --
+        only_count --
+        optional_time --
+        pagination --
+        persistent_signatures --
+        ql_filters --
+        related_entities --
+        revision_id --
+        roles_signatures --
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/GetServicesCount
+        """
+        if not body:
+            body = aspm_get_services_count_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetServicesCount",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def get_service_violation_types(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get the different types of violation.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "filter": {
+                        "order_by": {
+                            "by_field": "string",
+                            "direction": integer
+                        },
+                        "paginate": {
+                            "direction": "string",
+                            "limit": integer,
+                            "offset": integer,
+                            "orderBy": [
+                                "string"
+                            ]
+                        }
+                    },
+                    "optionalTime": integer,
+                    "revisionId": integer
+                }
+        filter -- Query filter. Dictionary.
+        optional_time -- Integer.
+        revision_id -- Revision ID. Integer.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/GetServiceViolationTypes
+        """
+        if not body:
+            body = aspm_violations_search_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetServiceViolationTypes",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_tags(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get all the tags.
+
+        Keyword arguments:
+        is_unique -- Flag indicating if the tag is unique. Boolean.
+        tag_name -- Tag name. String.
+        limit -- Total number of tags to return. Integer.
+        offset -- Starting position from which to return records. Integer.
+        name -- String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/GetTags
+        """
+        keymap = {"is_unique": "isUnique", "tag_name": "tagName"}
+        for key, camelkey in keymap.items():
+            if kwargs.get(key, None):
+                kwargs[camelkey] = kwargs.get(key)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetTags",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def update_tags(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Create new or update existing tag. You can update unique tags table or regular tags table.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "entries": [
+                        {
+                            "isSensitive": true,
+                            "name": "string",
+                            "tag_type": "string",
+                            "value": "string"
+                        }
+                    ]
+                }
+        entries -- Tag entries. List of dictionaries.
+                   Overrides the is_sensitive, persistent_signature, and value keywords.
+        is_sensitive -- Sensitive. Boolean.
+        name -- Tag name. String.
+        tag_type -- Tag type. String.
+        value -- Tag value. String.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: PUT
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/UpsertTags
+        """
+        if not body:
+            body = aspm_update_tag_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="UpsertTags",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def delete_tags(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Remove existing tags.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "entries": [
+                        {
+                            "isSensitive": boolean,
+                            "persistentSignature": "string",
+                            "value": "string"
+                        }
+                    ],
+                    "name": "string"
+                }
+        entries -- Tag entries. List of dictionaries.
+                   Overrides the is_sensitive, persistent_signature, and value keywords.
+        is_sensitive -- Sensitive. Boolean.
+        name -- Tag name. String.
+        persistent_signature -- Persistent signature. String.
+        value -- Tag value. String.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/ASPM/DeleteTags
+        """
+        if not body:
+            body = aspm_delete_tag_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="DeleteTags",
+            keywords=kwargs,
+            body=body
+            )
+
+    UpsertBusinessApplications = update_business_applications
+    GetExecutorNodes = get_executor_nodes
+    UpdateExecutorNode = update_executor_node
+    CreateExecutorNode = create_executor_node
+    DeleteExecutorNode = delete_node
+    GetIntegrationTasks = get_integration_tasks
+    CreateIntegrationTask = create_integration_task
+    UpdateIntegrationTask = update_integration_task
+    DeleteIntegrationTask = delete_integration_task
+    RunIntegrationTask = run_integration_task
+    GetIntegrationTypes = get_integration_types
+    GetIntegrations = get_integrations
+    CreateIntegration = create_integration
+    UpdateIntegration = update_integration
+    DeleteIntegration = delete_integration
+    ExecuteQuery = execute_query
+    ServiceNowGetDeployments = get_servicenow_deployments
+    ServiceNowGetServices = get_servicenow_services
+    GetServicesCount = get_services_count
+    GetServiceViolationTypes = get_service_violation_types
+    GetTags = get_tags
+    UpsertTags = update_tags
+    DeleteTags = delete_tags
diff --git a/src/falconpy/cloud_snapshots.py b/src/falconpy/cloud_snapshots.py
index c961728c..2ce4129d 100644
--- a/src/falconpy/cloud_snapshots.py
+++ b/src/falconpy/cloud_snapshots.py
@@ -218,6 +218,34 @@ def get_credentials(self: object) -> Dict[str, Union[int, dict]]:
             operation_id="GetCredentialsMixin0"
             )
 
+    def get_iac_credentials(self: object) -> Dict[str, Union[int, dict]]:
+        """Retrieve the registry credentials.
+
+        HTTP Method: GET
+
+        Swagger URL
+        ----
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/cspg-iacapi/GetCredentialsMixin0
+
+        Keyword arguments
+        ----
+        This method does not accept keyword arguments.
+
+        Arguments
+        ----
+        This method does not accept arguments.
+
+        Returns
+        ----
+        dict
+            Dictionary object containing API response.
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetCredentialsIAC"
+            )
+
     @force_default(defaults=["body"], default_types=["dict"])
     def register_account(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Create inventory from data received from a snapshot.
diff --git a/src/falconpy/compliance_assessments.py b/src/falconpy/compliance_assessments.py
index 2cf00d3c..ab83d4eb 100644
--- a/src/falconpy/compliance_assessments.py
+++ b/src/falconpy/compliance_assessments.py
@@ -39,7 +39,7 @@
 from typing import Dict, Union
 from ._util import force_default, process_service_request
 from ._service_class import ServiceClass
-from ._endpoint._compliance_assessments import _complianceassessments_endpoints as Endpoints
+from ._endpoint._compliance_assessments import _compliance_assessments_endpoints as Endpoints
 
 
 class ComplianceAssessments(ServiceClass):
@@ -62,12 +62,13 @@ def aggregate_cluster_assessments(self: object, parameters: dict = None, **kwarg
         Keyword arguments:
         filter -- Filter results using a query in Falcon Query Language (FQL). String.
                   Supported filters:
-                  cloud_info.cluster_name: Kubernetes cluster name,
-                  cloud_info.cloud_region: Cloud region,
-                  compliance_finding.framework: Compliance finding framework (available values: CIS),
-                  cloud_info.cloud_account_id: Cloud account ID,
-                  cloud_info.namespace: Kubernetes namespace,
-                  cid: Customer ID cloud_info.cloud_provider: Cloud provider
+                  cloud_info.cloud_region: Cloud region
+                  compliance_finding.framework: Compliance finding framework (available values: CIS)
+                  cloud_info.cluster_name: Kubernetes cluster name
+                  cloud_info.cloud_account_id: Cloud account ID
+                  cloud_info.namespace: Kubernetes namespace
+                  cloud_info.cloud_provider: Cloud provider
+                  cid: Customer ID
 
         This method only supports keywords for providing arguments.
 
@@ -93,23 +94,23 @@ def aggregate_image_assessments(self: object, parameters: dict = None, **kwargs)
         Keyword arguments:
         filter -- Filter results using a query in Falcon Query Language (FQL). String.
                   Supported filters:
-                  cloud_info.cluster_name: Kubernetes cluster name
-                  compliance_finding.id: Compliance finding ID
-                  image_digest: Image digest (sha256 digest)
-                  image_registry: Image registry
-                  image_tag: Image tag
                   image_id: Image ID
-                  cloud_info.cloud_provider: Cloud provider
-                  asset_type: asset type (container image)
-                  compliance_finding.severity: Compliance finding severity;
-                    available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                  compliance_finding.framework: Compliance finding framework (available values: CIS)
                   image_repository: Image repository
+                  cloud_info.cloud_region: Cloud region
+                  cid: Customer ID
+                  compliance_finding.severity: Compliance finding severity
+                    available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
                   cloud_info.cloud_account_id: Cloud account ID
                   cloud_info.namespace: Kubernetes namespace
-                  cloud_info.cloud_region: Cloud region
                   compliance_finding.name: Compliance finding Name
-                  cid: Customer ID
+                  compliance_finding.framework: Compliance finding framework (allowed values: CIS)
+                  cloud_info.cluster_name: Kubernetes cluster name
+                  image_tag: Image tag
+                  cloud_info.cloud_provider: Cloud provider
+                  asset_type: asset type (container, image)
+                  image_registry: Image registry
+                  image_digest: Image digest (sha256 digest)
+                  compliance_finding.id: Compliance finding ID
         after -- 'after' value from the last response. Keep it empty for the first request. String.
         limit -- number of images to return in the response after 'after' key.
                  Keep it empty for the default number of 10000. String.
@@ -136,22 +137,23 @@ def aggregate_rules_assessments(self: object, parameters: dict = None, **kwargs)
         """Get the assessments for each rule.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   image_registry: Image registry
-                   image_repository: Image repository
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   cloud_info.cloud_region: Cloud region
-                   cloud_info.cloud_account_id: Cloud account ID
-                   cloud_info.cloud_provider: Cloud provider
-                   compliance_finding.id: Compliance finding ID
-                   compliance_finding.severity: Compliance finding severity;
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  cloud_info.cloud_provider: Cloud provider
+                  image_repository: Image repository
+                  cloud_info.cloud_region: Cloud region
+                  cloud_info.cloud_account_id: Cloud account ID
+                  compliance_finding.severity: Compliance finding severity
                     available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   image_id: Image ID
-                   image_tag: Image tag
-                   compliance_finding.name: Compliance finding Name
-                   image_digest: Image digest (sha256 digest)
-                   cid: Customer ID
+                  image_tag: Image tag
+                  cloud_info.cluster_name: Kubernetes cluster name
+                  image_id: Image ID
+                  image_registry: Image registry
+                  compliance_finding.name: Compliance finding Name
+                  compliance_finding.framework: Compliance finding framework (available values: CIS)
+                  cid: Customer ID
+                  compliance_finding.id: Compliance finding ID
+                  image_digest: Image digest (sha256 digest)
 
         This method only supports keywords for providing arguments.
 
@@ -175,23 +177,24 @@ def aggregate_failed_containers_by_rules(self: object, parameters: dict = None,
         """Get the containers grouped into rules on which they failed.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   cloud_info.cloud_region: Cloud region
-                   image_registry: Image registry
-                   cloud_info.cloud_account_id: Cloud account ID
-                   compliance_finding.name: Compliance finding Name
-                   image_tag: Image tag
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   cloud_info.cloud_provider: Cloud provider
-                   compliance_finding.id: Compliance finding ID
-                   compliance_finding.severity: Compliance finding severity;
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  cloud_info.cluster_name: Kubernetes cluster name
+                  cloud_info.cloud_account_id: Cloud account ID
+                  cloud_info.cloud_region: Cloud region
+                  compliance_finding.id: Compliance finding ID
+                  compliance_finding.name: Compliance finding Name
+                  image_registry: Image registry
+                  cloud_info.namespace: Kubernetes namespace
+                  image_tag: Image tag
+                  image_id: Image ID
+                  image_repository: Image repository
+                  cid: Customer ID
+                  compliance_finding.severity: Compliance finding severity
                     available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   cid: Customer ID
-                   image_id: Image ID
-                   image_digest: Image digest (sha256 digest)
-                   cloud_info.namespace: Kubernetes namespace
-                   image_repository: Image repository
+                  image_digest: Image digest (sha256 digest)
+                  cloud_info.cloud_provider: Cloud provider
+                  compliance_finding.framework: Compliance finding framework (available values: CIS)
 
         This method only supports keywords for providing arguments.
 
@@ -216,23 +219,24 @@ def aggregate_failed_containers_count_by_severity(self: object,
         """Get the failed containers count grouped into severity levels.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   cloud_info.namespace: Kubernetes namespace
-                   cloud_info.cloud_provider: Cloud provider
-                   compliance_finding.id: Compliance finding ID
-                   image_registry: Image registry
-                   compliance_finding.name: Compliance finding Name
-                   compliance_finding.severity: Compliance finding severity;
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  compliance_finding.name: Compliance finding Name
+                  compliance_finding.severity: Compliance finding severity
                     available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   cloud_info.cloud_account_id: Cloud account ID
-                   image_id: Image ID
-                   image_digest: Image digest (sha256 digest)
-                   image_repository: Image repository
-                   image_tag: Image tag
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   cid: Customer ID
-                   cloud_info.cloud_region: Cloud region
+                  cloud_info.cloud_account_id: Cloud account ID
+                  image_tag: Image tag
+                  cid: Customer ID
+                  compliance_finding.id: Compliance finding ID
+                  image_digest: Image digest (sha256 digest)
+                  cloud_info.cluster_name: Kubernetes cluster name
+                  cloud_info.cloud_provider: Cloud provider
+                  image_repository: Image repository
+                  cloud_info.cloud_region: Cloud region
+                  image_registry: Image registry
+                  image_id: Image ID
+                  cloud_info.namespace: Kubernetes namespace
+                  compliance_finding.framework: Compliance finding framework (allowed values: CIS)
 
         This method only supports keywords for providing arguments.
 
@@ -256,23 +260,24 @@ def aggregate_failed_images_by_rules(self: object, parameters: dict = None, **kw
         """Get the images grouped into rules on which they failed.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   image_repository: Image repository
-                   image_tag: Image tag
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   cloud_info.cloud_region: Cloud region
-                   cloud_info.cloud_account_id: Cloud account ID
-                   image_registry: Image registry
-                   compliance_finding.name: Compliance finding Name
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   cloud_info.namespace: Kubernetes namespace
-                   cid: Customer ID
-                   compliance_finding.severity: Compliance finding severity;
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  cloud_info.cluster_name: Kubernetes cluster name
+                  image_digest: Image digest (sha256 digest)
+                  image_tag: Image tag
+                  cid: Customer ID
+                  compliance_finding.id: Compliance finding ID
+                  compliance_finding.name: Compliance finding Name
+                  cloud_info.cloud_provider: Cloud provider
+                  cloud_info.cloud_region: Cloud region
+                  cloud_info.namespace: Kubernetes namespace
+                  image_registry: Image registry
+                  compliance_finding.severity: Compliance finding severity
                     available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   cloud_info.cloud_provider: Cloud provider
-                   compliance_finding.id: Compliance finding ID
-                   image_id: Image ID
-                   image_digest: Image digest (sha256 digest)
+                  image_id: Image ID
+                  cloud_info.cloud_account_id: Cloud account ID
+                  compliance_finding.framework: Compliance finding framework (allowed values: CIS)
+                  image_repository: Image repository
 
         This method only supports keywords for providing arguments.
 
@@ -297,23 +302,24 @@ def aggregate_failed_images_count_by_severity(self: object,
         """Get the failed images count grouped into severity levels.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   image_tag: Image tag
-                   compliance_finding.name: Compliance finding Name
-                   compliance_finding.severity: Compliance finding severity;
-                    available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   cloud_info.cloud_account_id: Cloud account ID
-                   image_digest: Image digest (sha256 digest)
-                   image_registry: Image registry
-                   image_id: Image ID
-                   cloud_info.namespace: Kubernetes namespace
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   image_repository: Image repository
-                   cloud_info.cloud_provider: Cloud provider
-                   cid: Customer ID
-                   cloud_info.cloud_region: Cloud region
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   compliance_finding.id: Compliance finding ID
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  compliance_finding.severity: Compliance finding severity
+                    available values: 4, 3, 2, 1 (4: critical,  3: high, 2: medium, 1:low)
+                  cloud_info.cloud_account_id: Cloud account ID
+                  cloud_info.cloud_region: Cloud region
+                  compliance_finding.id: Compliance finding ID
+                  compliance_finding.framework: Compliance finding framework (allowed values: CIS)
+                  image_registry: Image registry
+                  cloud_info.cluster_name: Kubernetes cluster  name
+                  image_id: Image ID
+                  cloud_info.cloud_provider: Cloud provider
+                  cid: Customer ID
+                  cloud_info.namespace: Kubernetes namespace
+                  image_digest: Image digest (sha256 digest)
+                  image_tag: Image tag
+                  image_repository: Image repository
+                  compliance_finding.name: Compliance finding Name
 
         This method only supports keywords for providing arguments.
 
@@ -337,23 +343,24 @@ def aggregate_failed_rules_by_clusters(self: object, parameters: dict = None, **
         """Get the failed rules for each cluster grouped into severity levels.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   compliance_finding.name: Compliance finding Name
-                   image_digest: Image digest (sha256 digest)
-                   image_tag: Image tag
-                   cloud_info.cloud_account_id: Cloud account ID
-                   image_id: Image ID
-                   image_registry: Image registry
-                   cloud_info.cloud_region: Cloud region
-                   asset_type: asset type (container, image)
-                   compliance_finding.severity: Compliance finding severity;
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  cloud_info.cloud_account_id: Cloud account ID
+                  image_digest: Image digest (sha256 digest)
+                  cloud_info.cloud_region: Cloud region
+                  cid: Customer ID
+                  image_registry: Image registry
+                  cloud_info.cloud_provider: Cloud provider
+                  compliance_finding.id: Compliance finding ID
+                  compliance_finding.framework: Compliance finding framework (allowed values: CIS)
+                  asset_type: asset type  (container, image)
+                  compliance_finding.name: Compliance finding Name
+                  cloud_info.cluster_name: Kubernetes cluster name
+                  image_tag: Image tag
+                  image_id: Image ID
+                  image_repository: Image repository
+                  compliance_finding.severity: Compliance finding severity
                     available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   cid: Customer ID
-                   compliance_finding.id: Compliance finding ID
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   image_repository: Image repository
-                   cloud_info.cloud_provider: Cloud provider
 
         This method only supports keywords for providing arguments.
 
@@ -377,24 +384,25 @@ def aggregate_failed_rules_by_image(self: object, parameters: dict = None, **kwa
         """Get images with failed rules, rule count grouped by severity for each image.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   compliance_finding.id: Compliance finding ID
-                   image_tag: Image tag
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   image_registry: Image registry
-                   cloud_info.cloud_provider: Cloud provider
-                   compliance_finding.name: Compliance finding Name
-                   cid: Customer ID
-                   cloud_info.cloud_region: Cloud region
-                   cloud_info.cloud_account_id: Cloud account ID
-                   asset_type: asset type (container, image)
-                   compliance_finding.severity: Compliance finding severity;
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  compliance_finding.id: Compliance finding ID
+                  image_registry: Image registry
+                  image_digest: Image digest (sha256 digest)
+                  asset_type: asset type (container, image)
+                  cloud_info.cloud_region: Cloud region
+                  compliance_finding.name: Compliance finding Name
+                  compliance_finding.severity: Compliance finding severity
                     available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   image_id: Image ID
-                   image_digest: Image digest (sha256 digest)
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   image_repository: Image repository
-                   cloud_info.namespace: Kubernetes namespace
+                  image_tag: Image tag
+                  image_repository: Image repository
+                  cid: Customer ID
+                  image_id: Image ID
+                  cloud_info.namespace: Kubernetes namespace
+                  cloud_info.cloud_account_id: Cloud account ID
+                  cloud_info.cloud_provider: Cloud provider
+                  compliance_finding.framework: Compliance finding framework (allowed values: CIS)
+                  cloud_info.cluster_name: Kubernetes cluster name
 
         This method only supports keywords for providing arguments.
 
@@ -419,23 +427,24 @@ def aggregate_failed_rules_count_by_severity(self: object,
         """Get the failed rules count grouped into severity levels.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   cid: Customer ID
-                   cloud_info.cloud_region: Cloud region
-                   compliance_finding.id: Compliance finding ID
-                   image_id: Image ID
-                   image_tag: Image tag
-                   image_digest: Image digest (sha256 digest)
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   image_repository: Image repository
-                   cloud_info.cloud_account_id: Cloud account ID
-                   compliance_finding.severity: Compliance finding severity;
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  compliance_finding.framework: Compliance finding framework (available values: CIS)
+                  image_id: Image ID
+                  compliance_finding.name: Compliance finding Name
+                  image_digest: Image digest (sha256 digest)
+                  cloud_info.cloud_account_id: Cloud account ID
+                  image_repository: Image repository
+                  compliance_finding.id: Compliance finding ID
+                  compliance_finding.severity: Compliance finding severity
                     available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   asset_type: asset type (container, image)
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   cloud_info.cloud_provider: Cloud provider
-                   image_registry: Image registry
-                   compliance_finding.name: Compliance finding Name
+                  cloud_info.cloud_provider: Cloud provider
+                  cid: Customer ID
+                  asset_type: asset type (container, image)
+                  cloud_info.cloud_region: Cloud region
+                  image_registry: Image registry
+                  image_tag: Image tag
+                  cloud_info.cluster_name: Kubernetes cluster name
 
         This method only supports keywords for providing arguments.
 
@@ -459,25 +468,26 @@ def aggregate_rules_by_status(self: object, parameters: dict = None, **kwargs) -
         """Get the rules grouped by their statuses.
 
         Keyword arguments:
-        filter -- "Filter results using a query in Falcon Query Language (FQL). Supported Filters:
-                   compliance_finding.id: Compliance finding ID
-                   image_tag: Image tag
-                   compliance_finding.name: Compliance finding Name
-                   asset_type: asset type (container, image)
-                   compliance_finding.severity: Compliance finding severity;
-                    available values: 4, 3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
-                   cid: Customer ID
-                   container_name: Container name
-                   cloud_info.cluster_name: Kubernetes cluster name
-                   image_repository: Image repository
-                   cloud_info.cloud_provider: Cloud provider
-                   image_registry: Image registry
-                   compliance_finding.framework: Compliance finding framework (available values: CIS)
-                   cloud_info.cloud_region: Cloud region
-                   cloud_info.cloud_account_id: Cloud account ID
-                   image_id: Image ID
-                   image_digest: Image digest (sha256 digest)
-                   container_id: Container ID
+        filter -- Filter results using a query in Falcon Query Language (FQL).
+                  Supported Filters:
+                  compliance_finding.name: Compliance finding Name
+                  compliance_finding.framework: Compliance finding framework (allowed values: CIS)
+                  image_registry: Image registry
+                  container_id: Container ID
+                  cloud_info.cloud_region: Cloud region
+                  cid: Customer ID
+                  cloud_info.cloud_account_id: Cloud account ID
+                  container_name: Container name
+                  cloud_info.cloud_provider: Cloud provider
+                  image_repository: Image repository
+                  image_id: Image ID
+                  compliance_finding.severity: Compliance finding severity
+                    available values: 4,  3, 2, 1 (4: critical, 3: high, 2: medium, 1:low)
+                  cloud_info.cluster_name: Kubernetes cluster name
+                  asset_type: asset type (container, image)
+                  image_tag: Image tag
+                  compliance_finding.id: Compliance finding ID
+                  image_digest: Image digest (sha256 digest)
 
         This method only supports keywords for providing arguments.
 
diff --git a/src/falconpy/container_images.py b/src/falconpy/container_images.py
index 0043d085..3c06905d 100644
--- a/src/falconpy/container_images.py
+++ b/src/falconpy/container_images.py
@@ -37,6 +37,7 @@
 """
 from typing import Dict, Union
 from ._util import force_default, process_service_request, handle_single_argument
+from ._payload import base_image_payload
 from ._service_class import ServiceClass
 from ._endpoint._container_images import _container_images_endpoints as Endpoints
 
@@ -153,7 +154,7 @@ def aggregate_count(self: object, *args, parameters: dict = None, **kwargs) -> D
                     cve_id                      tag
                     detection_count             vulnerability_count
                     detection_name              vulnerability_severity
-                    detection_severity
+                    detection_severity          include_base_image_vuln
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         Arguments: When not specified, the first argument to this method is assumed to be 'filter'.
@@ -174,6 +175,32 @@ def aggregate_count(self: object, *args, parameters: dict = None, **kwargs) -> D
             params=handle_single_argument(args, parameters, "filter")
             )
 
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_combined_base_images(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve base images for provided filter.
+
+        Keyword arguments:
+        filter -- Filter images using a query in Falcon Query Language (FQL). String.
+                  Supported filters: image_digest, image_id, registry, repository, tag
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/container-images/CombinedBaseImages
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="CombinedBaseImages",
+            keywords=kwargs,
+            params=parameters
+            )
+
     @force_default(defaults=["parameters"], default_types=["dict"])
     def get_combined_images(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Get image assessment results by providing an FQL filter and paging details.
@@ -195,6 +222,7 @@ def get_combined_images(self: object, parameters: dict = None, **kwargs) -> Dict
                   highest_detection_severity        registry
                   highest_vulnerability_severity    repository
                   image_digest                      tag
+                  source
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         This method only supports keywords for providing arguments.
@@ -293,7 +321,7 @@ def read_combined_export(self: object, parameters: dict = None, **kwargs) -> Dic
                     cve_id                      tag
                     detection_count             vulnerability_count
                     detection_name              vulnerability_severity
-                    detection_severity
+                    detection_severity          include_base_image_vuln
         expand_vulnerabilities -- Expand vulnerabilities. Boolean.
         expand_detections -- Expand detections. Boolean.
         limit -- The upper-bound on the number of records to retrieve. Integer.
@@ -309,6 +337,7 @@ def read_combined_export(self: object, parameters: dict = None, **kwargs) -> Dic
                 highest_detection_severity          tag
                 highest_vulnerability_severity      vulnerabilities
                 image_digest                        highest_cps_current_rating
+                source
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         This method only supports keywords for providing arguments.
@@ -337,6 +366,7 @@ def get_combined_issues_summary(self: object, parameters: dict = None, **kwargs)
         registry -- Registry name. String.
         repository -- Repository name. String.
         tag -- Tag name. String.
+        include_base_image_vuln -- Include the base image vulnerability within the summary. Boolean.
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         This method only supports keywords for providing arguments.
@@ -365,6 +395,7 @@ def get_combined_vulnerabilities_summary(self: object, parameters: dict = None,
         registry -- Registry name. String.
         repository -- Repository name. String.
         tag -- Tag name. String.
+        include_base_image_vuln -- Include the base image vulnerability within the summary. Boolean.
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         This method only supports keywords for providing arguments.
@@ -384,13 +415,84 @@ def get_combined_vulnerabilities_summary(self: object, parameters: dict = None,
             params=parameters
             )
 
+    @force_default(defaults=["body"], default_types=["dict"])
+    def create_base_images(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete base images by base image UUID.
+
+        Keyword arguments:
+        body -- Full body payload dictionary in JSON format. Not required if using other keywords.
+                {
+                    "base_images": [
+                        {
+                            "image_digest": "string",
+                            "image_id": "string",
+                            "registry": "string",
+                            "repository": "string",
+                            "tag": "string"
+                        }
+                    ]
+                }
+        image_digest -- Image digest. String.
+        image_id -- UUID for the image. String.
+        registry -- Image registry. String.
+        repository -- Image repository. String.
+        tag -- Image tag. String.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/container-images/CreateBaseImagesEntities
+        """
+        if not body:
+            body = base_image_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="CreateBaseImagesEntities",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def delete_base_images(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete base images by base image UUID.
+
+        Keyword arguments:
+        ids -- UUID of images to delete. String or list of strings.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        Arguments: When not specified, the first argument to this method is assumed to be 'ids'.
+                   All others are ignored.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/container-images/DeleteBaseImages
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="DeleteBaseImages",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "ids")
+            )
+
     AggregateImageAssessmentHistory = aggregate_assessment_history
     AggregateImageCountByBaseOS = aggregate_count_by_base_os
     AggregateImageCountByState = aggregate_count_by_state
     AggregateImageCount = aggregate_count
     GetCombinedImages = get_combined_images
+    CombinedBaseImages = get_combined_base_images
     CombinedImageByVulnerabilityCount = get_combined_images_by_vulnerability_count
     CombinedImageDetail = get_combined_detail
     ReadCombinedImagesExport = read_combined_export
     CombinedImageIssuesSummary = get_combined_issues_summary
     CombinedImageVulnerabilitySummary = get_combined_vulnerabilities_summary
+    DeleteBaseImages = delete_base_images
diff --git a/src/falconpy/container_vulnerabilities.py b/src/falconpy/container_vulnerabilities.py
index 178fe1c5..1e15f4a0 100644
--- a/src/falconpy/container_vulnerabilities.py
+++ b/src/falconpy/container_vulnerabilities.py
@@ -74,6 +74,7 @@ def read_vulnerability_counts_by_active_exploited(self: object,
                     cvss_score                  repository
                     description                 severity
                     exploited_status            tag
+                    include_base_image_vuln
         limit -- The upper-bound on the number of records to retrieve. Integer.
         offset -- The offset from where to begin. Integer.
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
@@ -116,6 +117,7 @@ def read_vulnerability_counts_by_cps_rating(self: object,
                     cvss_score                  repository
                     description                 severity
                     exploited_status            tag
+                    include_base_image_vuln
         limit -- The upper-bound on the number of records to retrieve. Integer.
         offset -- The offset from where to begin. Integer.
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
@@ -158,6 +160,7 @@ def read_vulnerability_counts_by_cvss_score(self: object,
                     cvss_score                  repository
                     description                 severity
                     exploited_status            tag
+                    include_base_image_vuln
         limit -- The upper-bound on the number of records to retrieve. Integer.
         offset -- The offset from where to begin. Integer.
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
@@ -197,6 +200,7 @@ def read_vulnerability_counts_by_severity(self: object, parameters: dict = None,
                     cvss_score                  repository
                     description                 severity
                     exploited_status            tag
+                    include_base_image_vuln
         limit -- The upper-bound on the number of records to retrieve. String.
         offset -- The offset from where to begin. String.
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
@@ -236,6 +240,7 @@ def read_vulnerability_count(self: object, parameters: dict = None, **kwargs) ->
                     cvss_score                  repository
                     description                 severity
                     exploited_status            tag
+                    include_base_image_vuln
         limit -- The upper-bound on the number of records to retrieve. Integer.
         offset -- The offset from where to begin. Integer.
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
@@ -327,7 +332,7 @@ def read_combined_vulnerability_detail(self: object, parameters: dict = None, **
                     cps_rating          is_zero_day
                     cve_id              remediation_available
                     cvss_score          severity
-                    exploited_status
+                    exploited_status    include_base_image_vuln
         limit -- The upper-bound on the number of records to retrieve. Integer.
         offset -- The offset from where to begin. Integer.
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
@@ -395,6 +400,7 @@ def read_combined_vulnerabilities(self: object, parameters: dict = None, **kwarg
                     cvss_score                  repository
                     description                 severity
                     exploited_status            tag
+                    include_base_image_vuln
         limit -- The upper-bound on the number of records to retrieve. Integer.
         offset -- The offset from where to begin. Integer.
         sort -- The fields to sort the records on. String.
@@ -432,3 +438,4 @@ def read_combined_vulnerabilities(self: object, parameters: dict = None, **kwarg
     ReadVulnerabilityCountByCPSRating = read_vulnerability_counts_by_cps_rating
     ReadVulnerabilityCountByCVSSScore = read_vulnerability_counts_by_cvss_score
     ReadVulnerabilityCountByActivelyExploited = read_vulnerability_counts_by_active_exploited
+    read_vulnerability_counts_by_actively_exploited = read_vulnerability_counts_by_active_exploited
diff --git a/src/falconpy/cspm_registration.py b/src/falconpy/cspm_registration.py
index 03728b94..5d9f9301 100644
--- a/src/falconpy/cspm_registration.py
+++ b/src/falconpy/cspm_registration.py
@@ -245,6 +245,11 @@ def get_aws_console_setup_urls(self: object, parameters: dict = None, **kwargs)
         use_existing_cloudtrail -- Use the existing AWS cloudtrail. (true / false) String.
         parameters -- full parameters payload, not required if using other keywords.
         region -- AWS Region. String.
+        template -- Template to be rendered. String.
+                    Allowed values:
+                    aws-url         aws-sensor-management-url
+                    aws-iom-url     aws-dspm-url
+                    aws-ioa-url     aws-idp-ur
 
         This method only supports keywords for providing arguments.
 
@@ -271,10 +276,14 @@ def get_aws_account_scripts_attachment(self: object, parameters: dict = None, **
         to grant access to CrowdStrike for their AWS environment.
 
         Keyword arguments:
-        accounts -- List of accounts to register. String or list of strings.
+        account_type -- CSPM account type. String. Allowed values: gov, commercial
+        accounts -- List of accounts to register. String or list of strings. Format: account,profile
         aws_profile -- The AWS profile to be used during registration. String.
         behavior_assessment_enabled -- Enable behavior assessment. String. Allowed values: true, false
         custom_role_name -- The custom IAM role to be used during registration. String.
+        dspm_enabled -- Flag indicating if DSPM is enabled. String. Allowed values: true, false
+        dspm_regions -- List of DSPM regions. Comma delimited string.
+        dspm_role -- DSPM role. String.
         ids -- List of AWS Account IDs to retrieve the script for. String or list of strings.
         organization_id -- The AWS organization ID to be registered. String or list of strings.
         parameters -- full parameters payload, not required if ids is provided as a keyword.
diff --git a/src/falconpy/custom_storage.py b/src/falconpy/custom_storage.py
index 57c4bec9..970b599b 100644
--- a/src/falconpy/custom_storage.py
+++ b/src/falconpy/custom_storage.py
@@ -249,7 +249,8 @@ def upload(self, body: dict = None, parameters: dict = None, **kwargs) -> Dict[s
                                                body=body,
                                                params=parameters,
                                                collection_name=collection_name,
-                                               object_key=object_key
+                                               object_key=object_key,
+                                               headers=header_payload
                                                )
         else:
             returned = generate_error_result("You must provide a collection_name and an "
@@ -350,6 +351,338 @@ def metadata(self, **kwargs) -> Dict[str, Union[int, dict]]:
                                              )
         return returned
 
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def list_by_version(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """List the object keys in the specified collection in alphabetical order.
+
+        HTTP Method: GET
+
+        Swagger URL
+        ----
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/custom-storage/ListObjectsByVersion
+
+        Keyword arguments
+        ----
+        collection_name : string (required)
+            The name of the collection to list objects for.
+        collection_version : string(required)
+            The version of the collection to list objects for.
+        end : string
+            The ending key to use for the end of the listing.
+        limit : integer
+            The maximum number of results to return.
+        parameters : dict
+            Full parameters payload. Not required if using other keywords.
+        start : string
+            The starting key to begin listing from.
+
+        This method only supports keywords for providing arguments.
+
+        Returns
+        ----
+        dict
+            Dictionary object containing API response.
+        """
+        collection_name = kwargs.get("collection_name", False)
+        collection_version = kwargs.get("collection_version", False)
+        if min(bool(collection_name), bool(collection_version)):
+            # Pop the path variables from the keywords dictionary
+            # before processing query string arguments.
+            kwargs.pop("collection_name")
+            kwargs.pop("collection_version")
+            returned = process_service_request(
+                calling_object=self,
+                endpoints=Endpoints,
+                operation_id="ListObjectsByVersion",
+                keywords=kwargs,
+                params=parameters,
+                collection_name=collection_name,
+                collection_version=collection_version
+                )
+        else:
+            returned = generate_error_result("You must provide a collection_name, collection_version "
+                                             "and object_key argument in order to use this operation."
+                                             )
+        return returned
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def search_by_version(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Search for objects that match the specified filter criteria.
+
+        Object metadata is returned, not actual objects.
+
+        HTTP Method: POST
+
+        Swagger URL
+        ----
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/custom-storage/SearchObjectsByVersion
+
+        Keyword arguments
+        ----
+        collection_name : string (required)
+            The name of the collection to search.
+        collection_version: string (required)
+            The version of the collection to search.
+        filter : string (required)
+            The FQL formatted filter to use to limit returned results.
+        limit : integer
+            The maximum number of results to return.
+        offset : integer
+            The pagination offset to use for returned results.
+        parameters : dict
+            Full parameters payload. Not required if using other keywords.
+        sort : string
+            Sort order for returned results in FQL format.
+
+        This method only supports keywords for providing arguments.
+
+        Returns
+        ----
+        dict
+            Dictionary object containing API response.
+        """
+        collection_name = kwargs.get("collection_name", False)
+        collection_version = kwargs.get("collection_version", False)
+        if min(bool(collection_name), bool(collection_version)):
+            # Pop the path variables from the keywords dictionary
+            # before processing query string arguments.
+            kwargs.pop("collection_name")
+            kwargs.pop("collection_version")
+            returned = process_service_request(
+                calling_object=self,
+                endpoints=Endpoints,
+                operation_id="SearchObjectsByVersion",
+                keywords=kwargs,
+                params=parameters,
+                collection_name=collection_name,
+                collection_version=collection_version
+                )
+        else:
+            returned = generate_error_result("You must provide a collection_name, collection_version "
+                                             "and object_key argument in order to use this operation."
+                                             )
+        return returned
+
+    def get_version(self: object, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get the bytes for the specified object.
+
+        HTTP Method: GET
+
+        Swagger URL
+        ----
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/custom-storage/GetVersionedObject
+
+        Keyword arguments
+        ----
+        collection_name : string (required)
+            The name of the collection where the object resides.
+        collection_version : string (required)
+            The version of the collection where the object resides.
+        object_key : string (required)
+            The key of the object to be retrieved.
+
+        This method only supports keywords for providing arguments.
+
+        Returns
+        ----
+        bytes or dict
+            Binary (success) or Dictionary (failure) object containing API response.
+        """
+        collection_name = kwargs.get("collection_name", False)
+        collection_version = kwargs.get("collection_version", False)
+        object_key = kwargs.get("object_key", False)
+        if min(bool(collection_name), bool(collection_version), bool(object_key)):
+            # Pop the path variables from the keywords dictionary
+            # before processing query string arguments.
+            kwargs.pop("collection_name")
+            kwargs.pop("collection_version")
+            kwargs.pop("object_key")
+            returned = process_service_request(
+                calling_object=self,
+                endpoints=Endpoints,
+                operation_id="GetVersionedObject",
+                keywords=kwargs,
+                collection_name=collection_name,
+                collection_version=collection_version,
+                object_key=object_key
+                )
+        else:
+            returned = generate_error_result("You must provide a collection_name, collection_version "
+                                             "and object_key argument in order to use this operation."
+                                             )
+        return returned
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def upload_version(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Put the specified new object at the given key or overwrite an existing object at the given key.
+
+        HTTP Method: PUT
+
+        Swagger URL
+        ----
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/custom-storage/PutObjectByVersion
+
+        Keyword arguments
+        ----
+        body : binary [application/octet-stream] (required)
+            The object to be uploaded.
+        collection_name : string (required)
+            The name of the collection to upload to.
+        collection_version : string (required)
+            The version of the collection to upload to.
+        dry_run : boolean
+            Boolean flag indicating if this is a dry run. If set to True, the
+            request is validated if it would succeed, but not actually executed.
+        object_key : string (required)
+            The key of the object to be uploaded.
+        parameters : dict
+            Full parameters payload. Not required if using other keywords.
+        schema_version : string
+            The version of the collection schema.
+
+        This method only supports keywords for providing arguments.
+
+        Returns
+        ----
+        dict
+            Dictionary object containing API response.
+        """
+        collection_name = kwargs.get("collection_name", False)
+        collection_version = kwargs.get("collection_version", False)
+        object_key = kwargs.get("object_key", False)
+        if min(bool(collection_name), bool(collection_version), bool(object_key)):
+            # Pop the path variables from the keywords dictionary
+            # before processing query string arguments.
+            kwargs.pop("collection_name")
+            kwargs.pop("collection_version")
+            kwargs.pop("object_key")
+            # Create a copy of our default header dictionary
+            header_payload = json.loads(json.dumps(self.headers))
+            # Set our content-type header
+            header_payload["Content-Type"] = "application/octet-stream"
+            returned = process_service_request(
+                calling_object=self,
+                endpoints=Endpoints,
+                operation_id="PutObjectByVersion",
+                keywords=kwargs,
+                body=body,
+                headers=header_payload,
+                collection_name=collection_name,
+                collection_version=collection_version,
+                object_key=object_key
+                )
+        else:
+            returned = generate_error_result("You must provide a collection_name, collection_version "
+                                             "and object_key argument in order to use this operation."
+                                             )
+        return returned
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def delete_version(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete the specified versioned object.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        ----
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/custom-storage/DeleteVersionedObject
+
+        Keyword arguments
+        ----
+        collection_name : string (required)
+            The name of the collection to delete from.
+        collection_name : string (required)
+            The version of the collection to delete from.
+        dry_run : boolean
+            Boolean flag indicating if this is a dry run. If set to True, the
+            request is validated if it would succeed, but not actually executed.
+        object_key : string (required)
+            The key of the object to be removed.
+        parameters : dict
+            Full parameters payload. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns
+        ----
+        dict
+            Dictionary object containing API response.
+        """
+        collection_name = kwargs.get("collection_name", False)
+        collection_version = kwargs.get("collection_version", False)
+        object_key = kwargs.get("object_key", False)
+        if min(bool(collection_name), bool(collection_version), bool(object_key)):
+            # Pop the path variables from the keywords dictionary
+            # before processing query string arguments.
+            kwargs.pop("collection_name")
+            kwargs.pop("collection_version")
+            kwargs.pop("object_key")
+            returned = process_service_request(
+                calling_object=self,
+                endpoints=Endpoints,
+                operation_id="DeleteVersionedObject",
+                keywords=kwargs,
+                params=parameters,
+                collection_name=collection_name,
+                collection_version=collection_version,
+                object_key=object_key
+                )
+        else:
+            returned = generate_error_result("You must provide a collection_name, collection_version "
+                                             "and object_key argument in order to use this operation."
+                                             )
+        return returned
+
+    def version_metadata(self: object, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get the metadata for the specified object.
+
+        HTTP Method: GET
+
+        Swagger URL
+        ----
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/custom-storage/GetVersionedObjectMetadata
+
+        Keyword arguments
+        ----
+        collection_name : string (required)
+            The name of the collection where the object resides.
+        collection_version : string (required)
+            The version of the collection where the object resides.
+        object_key : string (required)
+            The key of the object to be retrieved.
+
+        This method only supports keywords for providing arguments.
+
+        Returns
+        ----
+        dict
+            Dictionary object containing API response.
+        """
+        collection_name = kwargs.get("collection_name", False)
+        collection_version = kwargs.get("collection_version", False)
+        object_key = kwargs.get("object_key", False)
+        if min(bool(collection_name), bool(collection_version), bool(object_key)):
+            # Pop the path variables from the keywords dictionary
+            # before processing query string arguments.
+            kwargs.pop("collection_name")
+            kwargs.pop("collection_version")
+            kwargs.pop("object_key")
+
+            returned = process_service_request(
+                calling_object=self,
+                endpoints=Endpoints,
+                operation_id="GetVersionedObjectMetadata",
+                keywords=kwargs,
+                collection_name=collection_name,
+                collection_version=collection_version,
+                object_key=object_key
+                )
+        else:
+            returned = generate_error_result("You must provide a collection_name, collection_version "
+                                             "and object_key argument in order to use this operation."
+                                             )
+        return returned
+
     # These method names align to the operation IDs in the API but
     # do not conform to snake_case / PEP8 and are defined here for
     # backwards compatibility / ease of use purposes.
@@ -359,3 +692,9 @@ def metadata(self, **kwargs) -> Dict[str, Union[int, dict]]:
     PutObject = upload
     DeleteObject = delete
     GetObjectMetadata = metadata
+    ListObjectsByVersion = list_by_version
+    SearchObjectsByVersion = search_by_version
+    GetVersionedObject = get_version
+    PutObjectByVersion = upload_version
+    DeleteVersionedObject = delete_version
+    GetVersionedObjectMetadata = version_metadata
diff --git a/src/falconpy/d4c_registration.py b/src/falconpy/d4c_registration.py
index 6c444fee..e982b4dc 100644
--- a/src/falconpy/d4c_registration.py
+++ b/src/falconpy/d4c_registration.py
@@ -204,6 +204,9 @@ def get_aws_account_scripts(self: object, *args, parameters: dict = None, **kwar
         aws_profile -- The AWS profile to be used during registration. String.
         behavior_assessment_enabled -- Enable behavior assessment. String. Allowed values: true, false
         custom_role_name -- The custom IAM role to be used during registration. String.
+        dspm_enabled -- Flag indicating if DSPM is enabled. String. Allowed values: true, false
+        dspm_regions -- List of DSPM regions. Comma delimited string.
+        dspm_role -- DSPM role. String.
         ids -- List of AWS Account IDs to retrieve the script for. String or list of strings.
         organization_id -- The AWS organization ID to be registered. String or list of strings.
         parameters -- full parameters payload, not required if ids is provided as a keyword.
diff --git a/src/falconpy/datascanner.py b/src/falconpy/datascanner.py
new file mode 100644
index 00000000..63a95fa7
--- /dev/null
+++ b/src/falconpy/datascanner.py
@@ -0,0 +1,161 @@
+"""CrowdStrike Falcon Datascanner API interface class.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+import json
+from typing import Dict, Union
+from ._util import process_service_request, generate_error_result
+from ._service_class import ServiceClass
+from ._endpoint._datascanner import _datascanner_endpoints as Endpoints
+
+
+class DataScanner(ServiceClass):
+    """The only requirement to instantiate an instance of this class is one of the following.
+
+    - a valid client_id and client_secret provided as keywords.
+    - a credential dictionary with client_id and client_secret containing valid API credentials
+      {
+          "client_id": "CLIENT_ID_HERE",
+          "client_secret": "CLIENT_SECRET_HERE"
+      }
+    - a previously-authenticated instance of the authentication service class (oauth2.py)
+    - a valid token provided by the authentication service class (oauth2.py)
+    """
+
+    def get_image_registry_credentials(self: object) -> Dict[str, Union[int, dict]]:
+        """Retrieve credentials in order to fetch a data scanner image.
+
+        Keyword arguments:
+        This method does not accept keyword arguments.
+
+        Arguments:
+        This method does not accept arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/datascanner/get-image-registry-credentials
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="get_image_registry_credentials"
+            )
+
+    def get_data_scanner_tasks(self: object, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve pending data scanner tasks.
+
+        Keyword arguments:
+        scanner_id -- ID of the data scanner. String.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/datascanner/get-data-scanner-tasks
+        """
+        scanner_id = kwargs.get("scanner_id", None)
+        if not scanner_id:
+            return generate_error_result("You must provide a scanner_id argument in order to use this operation.")
+
+        header_payload = json.loads(json.dumps(self.headers))
+        header_payload["X-Scanner-Id"] = scanner_id
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="get_data_scanner_tasks",
+            headers=header_payload
+            )
+
+    def update_data_scanner_tasks(self: object, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve task status from the data scanner.
+
+        Keyword arguments:
+        scanner_id -- ID of the data scanner. String.
+        machine_id -- Provider ID of machine. String.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: PATCH
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/datascanner/update-data-scanner-tasks
+        """
+        scanner_id = kwargs.get("scanner_id", None)
+        machine_id = kwargs.get("machine_id", None)
+        if not scanner_id or not machine_id:
+            return generate_error_result("You must provide a scanner_id and machine_id argument in order to use "
+                                         "this operation."
+                                         )
+
+        header_payload = json.loads(json.dumps(self.headers))
+        header_payload["X-Scanner-Id"] = scanner_id
+        header_payload["X-Machine-Id"] = machine_id
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="update_data_scanner_tasks",
+            headers=header_payload
+            )
+
+    def handle(self: object) -> Dict[str, Union[int, dict]]:
+        """Produce input messages for the corresponding Kafka topic.
+
+        Keyword arguments:
+        This method does not accept keyword arguments.
+
+        Arguments:
+        This method does not accept arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/handle/handle
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="handle"
+            )
diff --git a/src/falconpy/delivery_settings.py b/src/falconpy/delivery_settings.py
new file mode 100644
index 00000000..e50ccba3
--- /dev/null
+++ b/src/falconpy/delivery_settings.py
@@ -0,0 +1,116 @@
+"""CrowdStrike Falcon DeliverySettings API interface class.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+from typing import Dict, Union
+from ._util import force_default, process_service_request
+from ._payload import delivery_settings_payload
+from ._service_class import ServiceClass
+from ._endpoint._delivery_settings import _delivery_settings_endpoints as Endpoints
+
+
+class DeliverySettings(ServiceClass):
+    """The only requirement to instantiate an instance of this class is one of the following.
+
+    - a valid client_id and client_secret provided as keywords.
+    - a credential dictionary with client_id and client_secret containing valid API credentials
+      {
+          "client_id": "CLIENT_ID_HERE",
+          "client_secret": "CLIENT_SECRET_HERE"
+      }
+    - a previously-authenticated instance of the authentication service class (oauth2.py)
+    - a valid token provided by the authentication service class (oauth2.py)
+    """
+
+    def get_delivery_settings(self: object) -> Dict[str, Union[int, dict]]:
+        """Retrieve Delivery Settings.
+
+        Keyword arguments: This method does not accept keyword arguments.
+
+        Arguments: This method does not accept arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/delivery-settings/GetDeliverySettings
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetDeliverySettings"
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def create_delivery_settings(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Create Delivery Settings.
+
+        Keyword arguments:
+        body -- Full body payload as a JSON formatted dictionary. Not required if using other keywords.
+                {
+                    "delivery_settings": [
+                        {
+                            "delivery_cadence": "string",
+                            "delivery_type": "string"
+                        }
+                    ]
+                }
+        delivery_cadence -- Cadence for the delivery. String.
+        delivery_type -- Type of delivery. String.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/delivery-settings/PostDeliverySettings
+        """
+        if not body:
+            body = delivery_settings_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="PostDeliverySettings",
+            keywords=kwargs,
+            params=body
+            )
+
+    GetDeliverySettings = get_delivery_settings
+    PostDeliverySettings = create_delivery_settings
diff --git a/src/falconpy/discover.py b/src/falconpy/discover.py
index d5fcfad5..4037b9e7 100644
--- a/src/falconpy/discover.py
+++ b/src/falconpy/discover.py
@@ -54,6 +54,100 @@ class Discover(ServiceClass):
     - a valid token provided by the authentication service class (oauth2.py)
     """
 
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def query_combined_applications(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Search for applications by providing an FQL filter and paging details.
+
+        Returns details on applications which match the filter criteria.
+
+        Keyword arguments:
+        filter -- The filter expression that should be used to limit the results. FQL syntax.
+        limit -- The number of account IDs to return in this response. (Max: 100, default: 100)
+                 Use with the offset parameter to manage pagination of results.
+        offset -- An offset used with the limit parameter to manage pagination of results.
+                  On your first request, don't provide an offset. On subsequent requests,
+                  provide the offset from the previous response to continue from that place
+                  in the results.
+        parameters - full parameters payload, not required if using other keywords.
+        sort -- Sort assets by their properties. A single sort field is allowed.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/discover/combined-applications
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="combined_applications",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def query_combined_hosts(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Search for assets by providing an FQL (Falcon Query Language) filter and paging details.
+
+        Returns details on assets which match the filter criteria.
+
+        Keyword arguments:
+        filter -- The filter expression that should be used to limit the results. FQL syntax.
+                  Available Filters:
+                    agent_version                   kernel_version
+                    aid                             last_discoverer_aid
+                    bios_manufacturer               last_seen_timestamp
+                    bios_version                    local_ips_count
+                    cid                             machine_domain
+                    city                            network_interfaces
+                    confidence                      network_interfaces.interface_alias
+                    country                         network_interfaces.interface_description
+                    current_local_ip                network_interfaces.local_ip
+                    discoverer_aids                 network_interfaces.mac_address
+                    discoverer_count                network_interfaces.network_prefix
+                    discoverer_platform_names       os_version
+                    discoverer_product_type_descs   ou
+                    discoverer_tags                 platform_name
+                    entity_type                     product_type
+                    external_ip                     product_type_desc
+                    first_discoverer_aid            site_name
+                    first_discoverer_ip             system_manufacturer
+                    first_seen_timestamp            system_product_name
+                    groups                          system_serial_number
+                    hostname                        tags
+                    id
+        limit -- The number of asset IDs to return in this response. (Max: 100, default: 100)
+                 Use with the offset parameter to manage pagination of results.
+        offset -- An offset used with the limit parameter to manage pagination of results.
+                  On your first request, don't provide an offset. On subsequent requests,
+                  provide the offset from the previous response to continue from that place
+                  in the results.
+        parameters - full parameters payload, not required if using other keywords.
+        sort -- Sort assets by their properties. A single sort field is allowed.
+                Common sort options include:
+                  hostname|asc
+                  product_type|desc
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/discover/combined-hosts
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="combined_hosts",
+            keywords=kwargs,
+            params=parameters
+            )
+
     @force_default(defaults=["parameters"], default_types=["dict"])
     def get_accounts(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Get details on accounts by providing one or more IDs.
@@ -194,7 +288,7 @@ def query_accounts(self: object, parameters: dict = None, **kwargs) -> Dict[str,
         limit -- The number of account IDs to return in this response. (Max: 100, default: 100)
                  Use with the offset parameter to manage pagination of results.
         offset -- An offset used with the limit parameter to manage pagination of results.
-                  On your first request, don’t provide an offset. On subsequent requests,
+                  On your first request, don't provide an offset. On subsequent requests,
                   provide the offset from the previous response to continue from that place
                   in the results.
         parameters - full parameters payload, not required if using other keywords.
@@ -232,7 +326,7 @@ def query_applications(self: object, parameters: dict = None, **kwargs) -> Dict[
         limit -- The number of account IDs to return in this response. (Max: 100, default: 100)
                  Use with the offset parameter to manage pagination of results.
         offset -- An offset used with the limit parameter to manage pagination of results.
-                  On your first request, don’t provide an offset. On subsequent requests,
+                  On your first request, don't provide an offset. On subsequent requests,
                   provide the offset from the previous response to continue from that place
                   in the results.
         parameters - full parameters payload, not required if using other keywords.
@@ -290,7 +384,7 @@ def query_hosts(self: object, parameters: dict = None, **kwargs) -> Dict[str, Un
         limit -- The number of asset IDs to return in this response. (Max: 100, default: 100)
                  Use with the offset parameter to manage pagination of results.
         offset -- An offset used with the limit parameter to manage pagination of results.
-                  On your first request, don’t provide an offset. On subsequent requests,
+                  On your first request, don't provide an offset. On subsequent requests,
                   provide the offset from the previous response to continue from that place
                   in the results.
         parameters - full parameters payload, not required if using other keywords.
@@ -346,7 +440,7 @@ def query_logins(self: object, parameters: dict = None, **kwargs) -> Dict[str, U
         limit -- The number of login IDs to return in this response. (Max: 100, default: 100)
                  Use with the offset parameter to manage pagination of results.
         offset -- An offset used with the limit parameter to manage pagination of results.
-                  On your first request, don’t provide an offset. On subsequent requests,
+                  On your first request, don't provide an offset. On subsequent requests,
                   provide the offset from the previous response to continue from that place
                   in the results.
         parameters - full parameters payload, not required if using other keywords.
@@ -445,7 +539,7 @@ def query_iot_hosts(self: object, parameters: dict = None, **kwargs) -> dict:
         limit -- The number of asset IDs to return in this response. (Max: 100, default: 100)
                  Use with the offset parameter to manage pagination of results.
         offset -- An offset used with the limit parameter to manage pagination of results.
-                  On your first request, don’t provide an offset. On subsequent requests,
+                  On your first request, don't provide an offset. On subsequent requests,
                   provide the offset from the previous response to continue from that place
                   in the results.
         parameters - full parameters payload, not required if using other keywords.
@@ -516,7 +610,7 @@ def query_iot_hosts_v2(self: object, parameters: dict = None, **kwargs) -> dict:
         limit -- The number of asset IDs to return in this response. (Max: 100, default: 100)
                  Use with the offset parameter to manage pagination of results.
         offset -- An offset used with the limit parameter to manage pagination of results.
-                  On your first request, don’t provide an offset. On subsequent requests,
+                  On your first request, don't provide an offset. On subsequent requests,
                   provide the offset from the previous response to continue from that place
                   in the results.
         parameters - full parameters payload, not required if using other keywords.
@@ -541,3 +635,7 @@ def query_iot_hosts_v2(self: object, parameters: dict = None, **kwargs) -> dict:
             keywords=kwargs,
             params=parameters
             )
+
+    combined_applications = query_combined_applications
+    combined_hosts = query_combined_hosts
+    query_iot_hostsV2 = query_iot_hosts_v2
diff --git a/src/falconpy/downloads.py b/src/falconpy/downloads.py
new file mode 100644
index 00000000..7f1b30ca
--- /dev/null
+++ b/src/falconpy/downloads.py
@@ -0,0 +1,111 @@
+"""CrowdStrike Falcon Downloads API interface class.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+from typing import Dict, Union
+from ._util import force_default, process_service_request
+from ._service_class import ServiceClass
+from ._endpoint._downloads import _downloads_endpoints as Endpoints
+
+
+class Downloads(ServiceClass):
+    """The only requirement to instantiate an instance of this class is one of the following.
+
+    - a valid client_id and client_secret provided as keywords.
+    - a credential dictionary with client_id and client_secret containing valid API credentials
+      {
+          "client_id": "CLIENT_ID_HERE",
+          "client_secret": "CLIENT_SECRET_HERE"
+      }
+    - a previously-authenticated instance of the authentication service class (oauth2.py)
+    - a valid token provided by the authentication service class (oauth2.py)
+    """
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def download(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve a pre-signed URL for the requested file.
+
+        Keyword arguments:
+        file_name -- Name of the file to be downloaded
+        file_version -- Version of the file to be downloaded
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/downloads-api/DownloadFile
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="DownloadFile",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def enumerate(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Enumerate a list of files available for CID.
+
+        Keyword arguments:
+        file_name -- Apply filtering on file name. String.
+        platform -- Apply filtering on file platform. String.
+        category -- Apply filtering on file category. String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/downloads-api/EnumerateFile
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="EnumerateFile",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    DownloadFile = download
+    EnumerateFile = enumerate
diff --git a/src/falconpy/drift_indicators.py b/src/falconpy/drift_indicators.py
index 851e2292..51f03a27 100644
--- a/src/falconpy/drift_indicators.py
+++ b/src/falconpy/drift_indicators.py
@@ -36,7 +36,7 @@
 For more information, please refer to <https://unlicense.org>
 """
 from typing import Dict, Union
-from ._util import force_default, process_service_request
+from ._util import force_default, process_service_request, handle_single_argument
 from ._service_class import ServiceClass
 from ._endpoint._drift_indicators import _drift_indicators_endpoints as Endpoints
 
@@ -160,6 +160,36 @@ def search_and_read_drift_indicators(self: object, parameters: dict = None, **kw
             params=parameters
             )
 
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def read_drift_indicator_entities(self: object,
+                                      *args,
+                                      parameters: dict = None,
+                                      **kwargs
+                                      ) -> Dict[str, Union[int, dict]]:
+        """Retrieve Drift Indicator entities identified by the provided IDs.
+
+        Keyword arguments:
+        ids -- AID(s) of the hosts to retrieve. String or list of strings.
+        parameters - full parameters payload, not required if ids is provided as a keyword.
+
+        Arguments: When not specified, the first argument to this method is assumed to be 'ids'.
+                   All others are ignored.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/drift-indicators/ReadDriftIndicatorEntities
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ReadDriftIndicatorEntities",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "ids")
+            )
+
     @force_default(defaults=["parameters"], default_types=["dict"])
     def search_drift_indicators(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Retrieve all drift indicators that match the given query.
@@ -199,5 +229,6 @@ def search_drift_indicators(self: object, parameters: dict = None, **kwargs) ->
 
     GetDriftIndicatorsValuesByDate = get_drift_indicators_by_date
     ReadDriftIndicatorsCount = read_drift_indicator_counts
+    ReadDriftIndicatorEntities = read_drift_indicator_entities
     SearchAndReadDriftIndicatorEntities = search_and_read_drift_indicators
     SearchDriftIndicators = search_drift_indicators
diff --git a/src/falconpy/exposure_management.py b/src/falconpy/exposure_management.py
index 5c4e3f49..c78179fd 100644
--- a/src/falconpy/exposure_management.py
+++ b/src/falconpy/exposure_management.py
@@ -216,6 +216,45 @@ def get_assets(self: object, *args, parameters: dict = None, **kwargs) -> Dict[s
             params=handle_single_argument(args, parameters, "ids")
             )
 
+    @force_default(defaults=["body", "parameters"], default_types=["dict", "dict"])
+    def delete_assets(self: object,
+                      *args,
+                      body: dict = None,
+                      parameters: dict = None,
+                      **kwargs
+                      ) -> Dict[str, Union[int, dict]]:
+        """Delete external assets by providing one or more IDs.
+
+        Keyword arguments:
+        body -- Full body payload as a dictionary. Not required if using other keywords.
+        description -- Delete operation description. String.
+        ids -- One or more asset IDs (max: 100). Find asset IDs with query_external_assets.
+               String or list of strings.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/exposure-management/delete-external-assets
+        """
+        if not body:
+            if kwargs.get("description", None):
+                body["description"] = kwargs.get("description")
+                kwargs.pop("description")
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="delete_external_assets",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "ids"),
+            body=body
+            )
+
     @force_default(defaults=["body"], default_types=["dict"])
     def update_assets(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Update the details of external assets.
@@ -286,5 +325,6 @@ def query_assets(self: object, parameters: dict = None, **kwargs) -> Dict[str, U
     blob_download_external_assets = download_assets
     blob_preview_external_assets = preview_assets
     get_external_assets = get_assets
+    delete_external_assets = delete_assets
     patch_external_assets = update_assets
     query_external_assets = query_assets
diff --git a/src/falconpy/falconx_sandbox.py b/src/falconpy/falconx_sandbox.py
index 34f0855b..afbfc2bd 100644
--- a/src/falconpy/falconx_sandbox.py
+++ b/src/falconpy/falconx_sandbox.py
@@ -251,8 +251,8 @@ def get_submissions(self: object, *args, parameters: dict = None, **kwargs) -> D
             params=handle_single_argument(args, parameters, "ids")
             )
 
-    @force_default(defaults=["body"], default_types=["dict"])
-    def submit(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+    @force_default(defaults=["body", "parameters"], default_types=["dict", "dict"])
+    def submit(self: object, body: dict = None, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Submit an uploaded file or a URL for sandbox analysis.
 
         The sample file must have been previously uploaded through `upload_sample`.
@@ -264,6 +264,7 @@ def submit(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, di
                          default                    default_randomtheme
                          default_maxantievasion     default_openie
                          default_randomfiles
+        aid -- Agent ID. String.
         body -- full body payload, not required if keywords are used.
                 {
                     "sandbox": [
@@ -294,10 +295,12 @@ def submit(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, di
                       If true, sandbox analysis routes network traffic via TOR.
         environment_id -- Specifies the sandbox environment used for analysis.
                           Accepted values:
+                          410 - MacOS Sonoma ARM 64
                           400 - macOS Catalina 10.15
                           300 - Linux Ubuntu 16.04, 64-bit
                           200 - Android (static analysis)
                           160 - Windows 10, 64-bit
+                          140 - Windows 11, 64-bit
                           110 - Windows 7, 64-bit
                           100 - Windows 7, 32-bit
         network_settings -- Specifies the sandbox network_settings used for analysis.
@@ -334,7 +337,8 @@ def submit(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, di
             calling_object=self,
             endpoints=Endpoints,
             operation_id="Submit",
-            body=body
+            body=body,
+            params=parameters
             )
 
     @force_default(defaults=["parameters"], default_types=["dict"])
diff --git a/src/falconpy/foundry_logscale.py b/src/falconpy/foundry_logscale.py
index eb2660ce..c02f5608 100644
--- a/src/falconpy/foundry_logscale.py
+++ b/src/falconpy/foundry_logscale.py
@@ -91,6 +91,7 @@ def ingest_data(self: object,
         """Ingest data into the application repository synchronously.
 
         Keyword arguments:
+        data_content -- JSON formatted data to ingest. String.
         data_file -- Content of the uploaded archive in binary format.
                      'file' is also accepted as this parameter.
         parameters -- full parameters payload, not required if using other keywords.
@@ -110,7 +111,7 @@ def ingest_data(self: object,
         # Try to find the binary object they provided us
         if not data_file:
             data_file = kwargs.get("file", None)
-        data_keys = ["tag", "tag_source", "test_data"]
+        data_keys = ["tag", "tag_source", "test_data", "data_content"]
         form_data = {}
         for key in data_keys:
             if kwargs.get(key, None):
@@ -118,7 +119,9 @@ def ingest_data(self: object,
                 kwargs.pop(key)  # Prevent it from converting to a query string param
 
         # Create a multipart form payload for our upload file
-        file_tuple = [("file", ("data-upload", data_file, "application/json"))]
+        file_tuple = None
+        if data_file:
+            file_tuple = [("file", ("data-upload", data_file, "application/json"))]
         return process_service_request(
             calling_object=self,
             endpoints=Endpoints,
@@ -140,6 +143,7 @@ def ingest_data_async(self: object,
         """Ingest data into the application repository asynchronously.
 
         Keyword arguments:
+        data_content -- JSON formatted data to ingest. String.
         data_file -- Content of the uploaded archive in binary format.
                      'file' is also accepted as this parameter.
         parameters -- full parameters payload, not required if using other keywords.
@@ -159,7 +163,7 @@ def ingest_data_async(self: object,
         # Try to find the binary object they provided us
         if not data_file:
             data_file = kwargs.get("file", None)
-        data_keys = ["tag", "tag_source", "test_data"]
+        data_keys = ["tag", "tag_source", "test_data", "data_content"]
         form_data = {}
         for key in data_keys:
             if kwargs.get(key, None):
@@ -167,7 +171,9 @@ def ingest_data_async(self: object,
                 kwargs.pop(key)  # Prevent it from converting to a query string param
 
         # Create a multipart form payload for our upload file
-        file_tuple = [("file", ("data-upload", data_file, "application/json"))]
+        file_tuple = None
+        if data_file:
+            file_tuple = [("file", ("data-upload", data_file, "application/json"))]
         return process_service_request(
             calling_object=self,
             endpoints=Endpoints,
@@ -238,6 +244,8 @@ def get_search_results(self: object, parameters: dict = None, **kwargs) -> Dict[
         Keyword arguments:
         app_id -- Application ID. String.
         job_id -- Job ID for a previously executed asynchronous query. String.
+        job_status_only -- If set to true, result rows are dropped from the response
+                           and only the job status is returned. Boolean.
         limit -- The maximum number of records to return in this response. Integer.
                  Use with the offset parameter to manage pagination of results.
         infer_json_types -- Whether to try to infer data types in json event response
diff --git a/src/falconpy/hosts.py b/src/falconpy/hosts.py
index 7daca498..f6195b32 100644
--- a/src/falconpy/hosts.py
+++ b/src/falconpy/hosts.py
@@ -35,7 +35,7 @@
 
 For more information, please refer to <https://unlicense.org>
 """
-from typing import Dict, Union
+from typing import Dict, List, Union
 from ._util import generate_error_result, force_default, args_to_params
 from ._util import process_service_request, handle_single_argument
 from ._payload import generic_payload_list, simple_action_parameter
@@ -174,8 +174,8 @@ def perform_group_action(self: object, body: dict = None, parameters: dict = Non
 
     def update_device_tags(self: object,
                            action_name: str,
-                           ids: list or str,
-                           tags: list or str
+                           ids: Union[List[str], str],
+                           tags: Union[List[str], str]
                            ) -> Dict[str, Union[int, dict]]:
         """Append or remove one or more Falcon Grouping Tags on one or more hosts.
 
@@ -439,10 +439,12 @@ def query_devices_by_filter_scroll(self: object, parameters: dict = None, **kwar
         2 minutes with no maximum limit)
 
         Keyword arguments:
-        filter -- The filter expression that should be used to limit the results. FQL syntax.
-        limit -- The maximum number of records to return. [integer, 1-5000]
-        offset -- The string offset to page from, for the next result set.
-        parameters - full parameters payload, not required if using other keywords.
+        filter -- The filter expression that should be used to limit the results.
+                  FQL syntax. [string]
+        limit -- The maximum number of records to return. [integer, 1-10000]
+        offset -- The offset to page from, provided from the previous scroll call, for the next
+                  result set. For the first call, do not supply an offset. [string]
+        parameters - full parameters payload, not required if using other keywords. [dictionary]
         sort -- The property to sort by. FQL syntax (e.g. status.desc or hostname.asc).
                 Available sort fields
                 device_id               machine_domain
diff --git a/src/falconpy/identity_protection.py b/src/falconpy/identity_protection.py
index c6a71649..80cb70b0 100644
--- a/src/falconpy/identity_protection.py
+++ b/src/falconpy/identity_protection.py
@@ -36,8 +36,8 @@
 For more information, please refer to <https://unlicense.org>
 """
 from typing import Dict, Union
-from ._util import process_service_request, force_default
-from ._payload import aggregate_payload, generic_payload_list
+from ._util import process_service_request, force_default, handle_single_argument
+from ._payload import aggregate_payload, generic_payload_list, idp_policy_payload
 from ._service_class import ServiceClass
 from ._endpoint._identity_protection import _identity_protection_endpoints as Endpoints
 
@@ -94,7 +94,7 @@ def graphql(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, d
         return process_service_request(
             calling_object=self,
             endpoints=Endpoints,
-            operation_id="api_preempt_proxy_post_graphql",
+            operation_id="post_graphql",
             body=body
             )
 
@@ -214,6 +214,177 @@ def get_sensor_details(self: object, body: dict = None, **kwargs) -> Dict[str, U
             body=body
             )
 
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_policy_rules(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get policy rules.
+
+        Keyword arguments:
+        ids -- Rule IDs. String or list of strings.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        Arguments: When not specified, the first argument to this method is assumed to be 'ids'.
+                   All others are ignored.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/identity-protection/api.preempt.proxy.get.policy-rules
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="get_policy_rules",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "ids")
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def create_policy_rule(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Create policy rule.
+
+        Keyword arguments:
+        action -- Action to perform. String.
+        activity -- Activities that trigger the policy. Dictionary.
+        body -- Full body payload as a dictionary. Not required if using other keywords.
+                {
+                    "action": "string",
+                    "activity": {
+                        "accessType": {
+                            "exclude": [
+                                "string"
+                            ],
+                            "include": [
+                                "string"
+                            ]
+                        },
+                        "accessTypeCustom": {
+                            "exclude": [
+                                "string"
+                            ],
+                            "include": [
+                                "string"
+                            ]
+                        }
+                    },
+                    "destination": {
+                        "entityId": {
+                            "exclude": [
+                                "string"
+                            ],
+                            "include": [
+                                "string"
+                            ]
+                        },
+                        "groupMembership": {
+                            "exclude": [
+                                "string"
+                            ],
+                            "include": [
+                                "string"
+                            ]
+                        }
+                    },
+                    "enabled": boolean,
+                    "name": "string",
+                    "simulationMode": boolean,
+                    "sourceEndpoint": {
+                        "entityId": {
+                            "exclude": [
+                                "string"
+                            ],
+                            "include": [
+                                "string"
+                            ]
+                        },
+                        "groupMembership": {
+                            "exclude": [
+                                "string"
+                            ],
+                            "include": [
+                                "string"
+                            ]
+                        }
+                    },
+                    "sourceUser": {
+                        "entityId": {
+                            "exclude": [
+                                "string"
+                            ],
+                            "include": [
+                                "string"
+                            ]
+                        },
+                        "groupMembership": {
+                            "exclude": [
+                                "string"
+                            ],
+                            "include": [
+                                "string"
+                            ]
+                        }
+                    },
+                    "trigger": "string"
+                }
+        destination -- Activity destination. Dictionary.
+        enabled -- Flag indicating if the policy rule should be enabled. Boolean.
+        name -- Policy rule name.
+        simulation_mode -- Simulate the policy action instead of actually taking action. Boolean.
+                           simulationMode will also be accepted for this argument.
+        source_endpoint -- Source endpoint details. Dictionary.
+                           sourceEndpoint will also be accepted for this argument.
+        source_user -- Source user details. Dictionary.
+                       sourceUser will also be accepted for this argument.
+        trigger -- Policy rule trigger. String.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/identity-protection/api.preempt.proxy.post.policy-rules
+        """
+        if not body:
+            body = idp_policy_payload(passed_keywords=kwargs)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="post_policy_rules",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def delete_policy_rules(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete policy rules.
+
+        Keyword arguments:
+        ids -- Rule IDs to delete. String or list of strings.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        Arguments: When not specified, the first argument to this method is assumed to be 'ids'.
+                   All others are ignored.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html
+            #/identity-protection/api.preempt.proxy.delete.policy-rules
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="delete_policy_rules",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "ids")
+            )
+
     @force_default(defaults=["parameters"], default_types=["dict"])
     def query_sensors(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Search for sensors in your environment by providing hostname, IP, and other criteria.
@@ -244,11 +415,43 @@ def query_sensors(self: object, parameters: dict = None, **kwargs) -> Dict[str,
             params=parameters
             )
 
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def query_policy_rules(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Query policy rule IDs.
+
+        Keyword arguments:
+        enabled -- Whether the rule is enabled. Boolean.
+        simulation_mode -- Whether the rule is in simulation mode. Boolean.
+        name -- Rule name. String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html
+            #/identity-protection/api.preempt.proxy.get.policy-rules.query
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="get_policy_rules_query",
+            keywords=kwargs,
+            params=parameters
+            )
+
     # This method name aligns to the operation ID in the API but
     # does not conform to snake_case / PEP8 and is defined here
     # for backwards compatibility / ease of use purposes
     GraphQL = graphql
+    # This operation ID has been deprecated
     api_preempt_proxy_post_graphql = graphql
+    post_graphql = graphql
+    post_policy_rules = create_policy_rule
+    get_policy_rules_query = query_policy_rules
     GetSensorAggregates = get_sensor_aggregates
     GetSensorDetails = get_sensor_details
     QuerySensorsByFilter = query_sensors
diff --git a/src/falconpy/ioa_exclusions.py b/src/falconpy/ioa_exclusions.py
index 689f2222..c914ca4a 100644
--- a/src/falconpy/ioa_exclusions.py
+++ b/src/falconpy/ioa_exclusions.py
@@ -217,13 +217,20 @@ def query_exclusions(self: object,
         """Search for IOA Exclusions.
 
         Keyword arguments:
+        cl_regex -- The cl_regex expression to filter exclusions by, used alongside expressions
+                    specified in the filter query parameter.
         filter -- The filter expression that should be used to limit the results. FQL syntax.
+                  The filter expression that should be used to limit the results.
+                  Filtered queries involving regex fields should specify their expressions in the
+                  'ifn_regex' and 'cl_regex' parameters.
                   An asterisk wildcard '*' includes all results.
                   AVAILABLE FILTERS
                   applied_globally            last_modified
                   created_by                  modified_by
                   created_on                  value
                   name                        pattern
+        ifn_regex -- The ifn_regex expression to filter exclusions by, used alongside expressions
+                     specified in the filter query parameter. String.
         limit -- The maximum number of exclusions to return in this response.
                  [Integer, default: 100; max: 500]
                  Use with the offset parameter to manage pagination of results.
diff --git a/src/falconpy/kubernetes_protection.py b/src/falconpy/kubernetes_protection.py
index 638972a5..debda36c 100644
--- a/src/falconpy/kubernetes_protection.py
+++ b/src/falconpy/kubernetes_protection.py
@@ -83,15 +83,17 @@ def read_clusters_by_version(self: object, *args, parameters: dict = None, **kwa
         Keyword arguments:
         filter -- Retrieve count of Kubernetes clusters that match a query in Falcon Query Language (FQL). String.
                   Supported filters:
-                    access                  cluster_status
-                    agent_status            container_count
-                    cid                     kubernetes_version
-                    cloud_account_id        last_seen
-                    cloud_name              management_status
-                    cloud_region            node_count
-                    cluster_id              pod_count
-                    cluster_name            tags
-                    iar_coverage
+                    access              cluster_status
+                    agent_id            container_count
+                    agent_status        iar_coverage
+                    agent_type          kac_agent_id
+                    cid                 kubernetes_version
+                    cloud_account_id    last_seen
+                    cloud_name          management_status
+                    cloud_region        node_count
+                    cloud_service       pod_count
+                    cluster_id          tags
+                    cluster_name
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         Arguments: When not specified, the first argument to this method is assumed to be 'filter'.
@@ -120,15 +122,17 @@ def read_clusters_by_status(self: object, *args, parameters: dict = None, **kwar
         Keyword arguments:
         filter -- Retrieve count of Kubernetes clusters that match a query in Falcon Query Language (FQL). String.
                   Supported filters:
-                    access                  cluster_status
-                    agent_status            container_count
-                    cid                     kubernetes_version
-                    cloud_account_id        last_seen
-                    cloud_name              management_status
-                    cloud_region            node_count
-                    cluster_id              pod_count
-                    cluster_name            tags
-                    iar_coverage
+                    access              cluster_status
+                    agent_id            container_count
+                    agent_status        iar_coverage
+                    agent_type          kac_agent_id
+                    cid                 kubernetes_version
+                    cloud_account_id    last_seen
+                    cloud_name          management_status
+                    cloud_region        node_count
+                    cloud_service       pod_count
+                    cluster_id          tags
+                    cluster_name
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         Arguments: When not specified, the first argument to this method is assumed to be 'filter'.
@@ -156,15 +160,17 @@ def read_cluster_count(self: object, *args, parameters: dict = None, **kwargs) -
         Keyword arguments:
         filter -- Retrieve count of Kubernetes clusters that match a query in Falcon Query Language (FQL). String.
                   Supported filters:
-                    access                  cluster_status
-                    agent_status            container_count
-                    cid                     kubernetes_version
-                    cloud_account_id        last_seen
-                    cloud_name              management_status
-                    cloud_region            node_count
-                    cluster_id              pod_count
-                    cluster_name            tags
-                    iar_coverage
+                    access              cluster_status
+                    agent_id            container_count
+                    agent_status        iar_coverage
+                    agent_type          kac_agent_id
+                    cid                 kubernetes_version
+                    cloud_account_id    last_seen
+                    cloud_name          management_status
+                    cloud_region        node_count
+                    cloud_service       pod_count
+                    cluster_id          tags
+                    cluster_name
         parameters -- Full parameters payload dictionary. Not required if using other keywords.
 
         Arguments: When not specified, the first argument to this method is assumed to be 'filter'.
@@ -605,6 +611,62 @@ def read_sensor_coverage(self: object, *args, parameters: dict = None, **kwargs)
             params=handle_single_argument(args, parameters, "filter")
             )
 
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def read_namespace_count(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Bucket containers by agent type and calculate sensor coverage.
+
+        Keyword arguments:
+        filter -- Retrieve count of Kubernetes containers that match a query in Falcon Query Language (FQL). String.
+                  Supported filters:
+                  agent_id              cluster_id
+                  agent_type            cluster_name
+                  annotations_list      first_seen
+                  cid                   kac_agent_id
+                  cloud_account_id      last_seen
+                  cloud_name            namespace_id
+                  cloud_region          namespace_name
+                  cloud_service         resource_status
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        Arguments: When not specified, the first argument to this method is assumed to be 'filter'.
+                   All others are ignored.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/kubernetes-protection/ReadNamespaceCount
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ReadNamespaceCount",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "filter")
+            )
+
+    def read_namespaces_by_date_range_count(self: object) -> Dict[str, Union[int, dict]]:
+        """Retrieve namespaces by date range count.
+
+        Keyword arguments:
+        This method does not accept keyword arguments.
+
+        This method does not accept arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/kubernetes-protection/ReadNamespacesByDateRangeCount
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ReadNamespacesByDateRangeCount"
+            )
+
     @force_default(defaults=["parameters"], default_types=["dict"])
     def read_vulnerability_counts_by_severity(self: object,
                                               *args,
@@ -739,6 +801,84 @@ def read_cluster_enrichment(self: object, parameters: dict = None, **kwargs) ->
             params=parameters
             )
 
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def read_container_enrichment(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve container enrichment data.
+
+        Keyword arguments:
+        container_id -- One or more container ids for which to retrieve enrichment info
+        filter -- Supported filters:  last_seen
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/kubernetes-protection/ReadContainerEnrichment
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ReadContainerEnrichment",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def read_pod_enrichment(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve pod enrichment data.
+
+        Keyword arguments:
+        pod_id -- One or more pod ids for which to retrieve enrichment info
+        filter -- Supported filters:  last_seen
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/kubernetes-protection/ReadPodEnrichment
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ReadPodEnrichment",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def read_deployment_enrichment(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Retrieve container enrichment data.
+
+        Keyword arguments:
+        deployment_id -- One or more deployment ids for which to retrieve enrichment info
+        filter -- Supported filters:  last_seen
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/kubernetes-protection/ReadDeploymentEnrichment
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="ReadDeploymentEnrichment",
+            keywords=kwargs,
+            params=parameters
+            )
+
     @force_default(defaults=["parameters"], default_types=["dict"])
     def read_node_enrichment(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Retrieve node enrichment data.
@@ -1999,6 +2139,8 @@ def update_azure_service_principal(self: object, *args, parameters: dict = None,
     FindContainersCountAffectedByZeroDayVulnerabilities = read_zero_day_affected_counts
     ReadVulnerableContainerImageCount = read_vulnerable_container_count
     ReadContainerCount = read_container_counts
+    ReadNamespacesByDateRangeCount = read_namespaces_by_date_range_count
+    ReadNamespaceCount = read_namespace_count
     FindContainersByContainerRunTimeVersion = find_containers_by_runtime_version
     GroupContainersByManaged = group_managed_containers
     ReadContainerImageDetectionsCountByDate = read_detections_count_by_date
@@ -2008,6 +2150,9 @@ def update_azure_service_principal(self: object, *args, parameters: dict = None,
     ReadDeploymentsByDateRangeCount = read_deployment_counts_by_date_range
     ReadDeploymentCount = read_deployment_count
     ReadClusterEnrichment = read_cluster_enrichment
+    ReadContainerEnrichment = read_container_enrichment
+    ReadPodEnrichment = read_pod_enrichment
+    ReadDeploymentEnrichment = read_deployment_enrichment
     ReadNodeEnrichment = read_node_enrichment
     ReadDistinctContainerImageCount = read_distinct_image_count
     ReadContainerImagesByMostUsed = read_images_by_most_used
diff --git a/src/falconpy/ml_exclusions.py b/src/falconpy/ml_exclusions.py
index 7b6f3650..fdb73714 100644
--- a/src/falconpy/ml_exclusions.py
+++ b/src/falconpy/ml_exclusions.py
@@ -115,6 +115,9 @@ def create_exclusions(self: object, body: dict = None, **kwargs) -> Dict[str, Un
             body = exclusion_payload(passed_keywords=kwargs)
         if kwargs.get("excluded_from", None):
             body["excluded_from"] = kwargs.get("excluded_from", None)
+        # Issue 1233
+        if not body.get("groups"):
+            body["groups"] = ["all"]
 
         return process_service_request(
             calling_object=self,
diff --git a/src/falconpy/quick_scan_pro.py b/src/falconpy/quick_scan_pro.py
new file mode 100644
index 00000000..ac1142b5
--- /dev/null
+++ b/src/falconpy/quick_scan_pro.py
@@ -0,0 +1,260 @@
+"""CrowdStrike Falcon Quick Scan Pro API interface class.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+from typing import Dict, Union
+from ._util import (
+    force_default,
+    process_service_request,
+    handle_single_argument,
+    generate_error_result,
+    params_to_keywords
+    )
+from ._service_class import ServiceClass
+from ._endpoint._quick_scan_pro import _quick_scan_pro_endpoints as Endpoints
+
+
+class QuickScanPro(ServiceClass):
+    """The only requirement to instantiate an instance of this class is one of the following.
+
+    - a valid client_id and client_secret provided as keywords.
+    - a credential dictionary with client_id and client_secret containing valid API credentials
+      {
+          "client_id": "CLIENT_ID_HERE",
+          "client_secret": "CLIENT_SECRET_HERE"
+      }
+    - a previously-authenticated instance of the authentication service class (oauth2.py)
+    - a valid token provided by the authentication service class (oauth2.py)
+    """
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def upload_file(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Upload a file to be further analyzed with QuickScan Pro. The samples expire after 90 days.
+
+        Keyword arguments:
+        file -- Binary file to be uploaded. Max file size: 256 MB.
+        scan -- If true, after upload, it starts scanning immediately. Default scan mode is 'false'
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/quick-scan-pro/UploadFileMixin0Mixin93
+        """
+        method_args = ["file", "scan"]
+        kwargs = params_to_keywords(method_args,
+                                    parameters,
+                                    kwargs
+                                    )
+        # Try to find the binary object they provided us
+        file_data = kwargs.get("file")
+        if not file_data:
+            return generate_error_result("You must provide a file to upload.", code=400)
+        kwargs.pop("file")
+
+        # Create the form data dictionary
+        file_extended = {"scan": kwargs.get("scan", False)}
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="UploadFileMixin0Mixin94",
+            data=file_extended,
+            files=[("file", ("UploadedFile", file_data))],  # Passed as a list of tuples
+            keywords=kwargs,
+            params=parameters
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def delete_file(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete file by its sha256 identifier.
+
+        Keyword arguments:
+        ids -- File's SHA256 to be deleted. String or list of strings.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        Arguments: When not specified, the first argument to this method is assumed to be 'ids'.
+                   All others are ignored.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/quick-scan-pro/DeleteFile
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="DeleteFile",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "ids")
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_scan_result(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get the result of an QuickScan Pro scan.
+
+        Keyword arguments:
+        ids -- Scan IDs previously created by the LaunchScan operation. String or list of strings.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        Arguments: When not specified, the first argument to this method is assumed to be 'ids'.
+                   All others are ignored.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/quick-scan-pro/GetScanResult
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetScanResult",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "ids")
+            )
+
+    @force_default(defaults=["body"], default_types=["dict"])
+    def launch_scan(self: object, body: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Start scanning a file uploaded through '/quickscanpro/entities/files/v1'.
+
+        Keyword arguments:
+        body -- Full body payload in dictionary format. Not required if using other keywords.
+                {
+                    "resources": [
+                        {
+                            "sha256": "string"
+                        }
+                    ]
+                }
+        sha256 -- SHA256 hash of the file to be scanned. String.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: POST
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/quick-scan-pro/LaunchScan
+        """
+        if not body:
+            body["resources"] = []
+            sha = kwargs.get("sha256", None)
+            if sha:
+                body["resources"].append({"sha256": sha})
+            else:
+                return generate_error_result("You must provide a SHA245 to be scanned.", code=400)
+
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="LaunchScan",
+            keywords=kwargs,
+            body=body
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def delete_scan_result(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Delete the result of an QuickScan Pro scan.
+
+        Keyword arguments:
+        ids -- Scan IDs previously created by the LaunchScan operation. String or list of strings.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        Arguments: When not specified, the first argument to this method is assumed to be 'ids'.
+                   All others are ignored.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: DELETE
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/quick-scan-pro/DeleteScanResult
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="DeleteScanResult",
+            keywords=kwargs,
+            params=handle_single_argument(args, parameters, "ids")
+            )
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def query_scan_results(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Get QuickScan Pro scan jobs for a given FQL filter.
+
+        Keyword arguments:
+        filter -- FQL query which contains the SHA256 field. String.
+        offset -- The offset to start retrieving IDs from. Integer.
+        limit -- Maximum number of IDs to return. Max: 5000. Integer.
+        sort -- Sort order in FQL format: `asc` or `desc`.
+                Supported field: `created_timestamp`. String.
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/quick-scan-pro/QueryScanResults
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="QueryScanResults",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    # These method names align to the operation IDs in the API but
+    # do not conform to snake_case / PEP8 and are defined here for
+    # backwards compatibility / ease of use purposes
+    UploadFileMixin0Mixin93 = upload_file
+    UploadFileMixin0Mixin94 = upload_file
+    DeleteFile = delete_file
+    GetScanResult = get_scan_result
+    LaunchScan = launch_scan
+    DeleteScanResult = delete_scan_result
+    QueryScanResults = query_scan_results
diff --git a/src/falconpy/recon.py b/src/falconpy/recon.py
index 9538ca37..6b014187 100644
--- a/src/falconpy/recon.py
+++ b/src/falconpy/recon.py
@@ -556,10 +556,8 @@ def get_notifications_detailed_translated(self: object,
                                               ) -> Dict[str, Union[int, dict]]:
         """Get detailed notifications based on their IDs.
 
-        These include the raw intelligence content that generated the match.
-        This endpoint will return translated notification content.
-        The only target language available is English.
-        A single notification can be translated per request
+        Get detailed notifications based on their IDs. These include the translated raw
+        intelligence content that generated the match or part of it.
 
         Keyword arguments:
         ids -- List of notification IDs to retrieve details for. String or list of strings.
@@ -587,7 +585,8 @@ def get_notifications_detailed_translated(self: object,
     def get_notifications_detailed(self: object, *args, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
         """Get detailed notifications based on their IDs.
 
-        These include the raw intelligence content that generated the match.
+        Get detailed notifications based on their IDs. These include the raw intelligence
+        content that generated the match or part of it.
 
         Keyword arguments:
         ids -- List of notification IDs to retrieve details for. String or list of strings.
@@ -1068,6 +1067,9 @@ def query_rules(self: object, parameters: dict = None, **kwargs) -> Dict[str, Un
                   Use with the limit parameter to manage pagination of results.
         parameters - full parameters payload, not required if using other keywords.
         q -- Free text search across all indexed fields.
+        secondary_sort -- Possible order by fields: created_timestamp, last_updated_timestamp.
+                          Ex: last_updated_timestamp|desc
+                          The keyword "secondarySort" will also be accepted for this value.
         sort -- The property to sort by. FQL syntax.
                 (e.g. created_timestamp|asc, last_updated_timestamp|desc)
 
@@ -1080,6 +1082,7 @@ def query_rules(self: object, parameters: dict = None, **kwargs) -> Dict[str, Un
         Swagger URL
         https://assets.falcon.crowdstrike.com/support/api/swagger.html#/recon/QueryRulesV1
         """
+        kwargs["secondarySort"] = kwargs.get("secondarySort", kwargs.get("secondary-sort", None))
         return process_service_request(
             calling_object=self,
             endpoints=Endpoints,
diff --git a/src/falconpy/sensor_usage.py b/src/falconpy/sensor_usage.py
new file mode 100644
index 00000000..e4802aa4
--- /dev/null
+++ b/src/falconpy/sensor_usage.py
@@ -0,0 +1,99 @@
+"""CrowdStrike Falcon Sensor Usage API interface class.
+
+ _______                        __ _______ __        __ __
+|   _   .----.-----.--.--.--.--|  |   _   |  |_.----|__|  |--.-----.
+|.  1___|   _|  _  |  |  |  |  _  |   1___|   _|   _|  |    <|  -__|
+|.  |___|__| |_____|________|_____|____   |____|__| |__|__|__|_____|
+|:  1   |                         |:  1   |
+|::.. . |   CROWDSTRIKE FALCON    |::.. . |    FalconPy
+`-------'                         `-------'
+
+OAuth2 API - Customer SDK
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
+"""
+from typing import Dict, Union
+from ._util import force_default, process_service_request
+from ._service_class import ServiceClass
+from ._endpoint._sensor_usage import _sensor_usage_endpoints as Endpoints
+
+
+class SensorUsage(ServiceClass):
+    """The only requirement to instantiate an instance of this class is one of the following.
+
+    - a valid client_id and client_secret provided as keywords.
+    - a credential dictionary with client_id and client_secret containing valid API credentials
+      {
+          "client_id": "CLIENT_ID_HERE",
+          "client_secret": "CLIENT_SECRET_HERE"
+      }
+    - a previously-authenticated instance of the authentication service class (oauth2.py)
+    - a valid token provided by the authentication service class (oauth2.py)
+    """
+
+    @force_default(defaults=["parameters"], default_types=["dict"])
+    def get_weekly_usage(self: object, parameters: dict = None, **kwargs) -> Dict[str, Union[int, dict]]:
+        """Fetch weekly sensor usage average.
+
+        Each data point represents the average of how many unique AIDs were seen per week for the previous 28 days.
+
+        Keyword arguments:
+        filter -- The FQL search filter.
+                  Allowed fields:
+                    event_date - A specified date that will be final date of the results returned.
+                                 Specified date cannot be after the default.
+                                 Format: '2024-06-11'
+                                 Default: the current date, minus 2 days, in UTC
+                    period - An integer surrounded by single quotes representing the number of days to return.
+                             Format: '30'
+                             Default: '28'
+                             Minimum: '1'
+                             Maximum: '395'
+                    selected_cids - A comma delimited list of CIDs to return data for.
+                                    Caller must be a parent CID or have special access enabled.
+                                    Format: 'cid_1,cid_2,cid_3'
+                                    Default: for parent CIDs the default is the parent and all children,
+                                             otherwise the current CID
+        parameters -- Full parameters payload dictionary. Not required if using other keywords.
+
+        This method only supports keywords for providing arguments.
+
+        Returns: dict object containing API response.
+
+        HTTP Method: GET
+
+        Swagger URL
+        https://assets.falcon.crowdstrike.com/support/api/swagger.html#/sensor-usage-api/GetSensorUsageWeekly
+        """
+        return process_service_request(
+            calling_object=self,
+            endpoints=Endpoints,
+            operation_id="GetSensorUsageWeekly",
+            keywords=kwargs,
+            params=parameters
+            )
+
+    GetSensorUsageWeekly = get_weekly_usage
diff --git a/src/falconpy/sensor_visibility_exclusions.py b/src/falconpy/sensor_visibility_exclusions.py
index 2de2642c..37b5d965 100644
--- a/src/falconpy/sensor_visibility_exclusions.py
+++ b/src/falconpy/sensor_visibility_exclusions.py
@@ -156,11 +156,14 @@ def update_exclusions(self: object, body: dict = None, **kwargs) -> Dict[str, Un
                         "string"
                     ],
                     "id": "string",
+                    "is_descendent_process": boolean,
                     "value": "string"
                 }
         comment -- String comment describing why the exclusion is entered.
         groups -- Group IDs to exclude. List of strings.
         id -- Exclusion ID to update. String.
+        is_descendent_process -- Flag to determine if an exclusion should
+                                 apply to all descendant processes. Boolean.
         value -- Value to exclude. String
 
         This method only supports keywords for providing arguments.
@@ -174,8 +177,6 @@ def update_exclusions(self: object, body: dict = None, **kwargs) -> Dict[str, Un
         """
         if not body:
             body = exclusion_payload(passed_keywords=kwargs)
-        if kwargs.get("id", None):
-            body["id"] = kwargs.get("id", None)
 
         return process_service_request(
             calling_object=self,
diff --git a/src/falconpy/threatgraph.py b/src/falconpy/threatgraph.py
index 5f60f27e..c2d22632 100644
--- a/src/falconpy/threatgraph.py
+++ b/src/falconpy/threatgraph.py
@@ -202,6 +202,7 @@ def get_edges(self: object, parameters: dict = None, **kwargs) -> Dict[str, Unio
                      failed_to_authenticate_ad_user           wmicreated_process
                      failed_to_authenticate_to_ad_computer    written_by_process
                      failed_to_authenticate_to_adfs_app       wrote_module
+                     protected_by_shield                      shield_activated_on_host
         ids -- Vertex ID to get details for.  Only one value is supported. String.
         limit -- How many edges to return in a single request [1-100]. Integer.
         nano -- Return nano-precision entity timestamps. Boolean.
@@ -324,7 +325,8 @@ def get_summary(self: object,
                        hunting_lead             wifi-access-points
                        idp-indicators           wifi_access_point
                        idp-sessions             xdr
-                       idp_indicator
+                       idp_indicator            shield
+                       shields
 
         This method only supports keywords for providing arguments.
 
@@ -352,6 +354,10 @@ def get_vertices_v1(self: object,
                         ) -> Dict[str, Union[int, dict]]:
         """Retrieve metadata for a given vertex ID.
 
+        Note: This is a legacy operation used by CrowdStrike Store partners prior
+        to release of the ThreatGraph OAuth 2.0 APIs. If you’re not currently using
+        this endpoint, use the get_vertices method instead.
+
         Keyword arguments:
         ids -- Vertex ID to get details for.  String or list of strings.
         scope -- Scope of the request. String.
@@ -409,8 +415,8 @@ def get_vertices_v1(self: object,
                        hunting_lead             wifi-access-points
                        idp-indicators           wifi_access_point
                        idp-sessions             xdr
-                       idp_indicator
-
+                       idp_indicator            shield
+                       shields
 
         This method only supports keywords for providing arguments.
 
@@ -495,7 +501,8 @@ def get_vertices(self: object,
                        hunting_lead             wifi-access-points
                        idp-indicators           wifi_access_point
                        idp-sessions             xdr
-                       idp_indicator
+                       idp_indicator            shield
+                       shields
 
         This method only supports keywords for providing arguments.
 


Test patch:
diff --git a/tests/test_api_integrations.py b/tests/test_api_integrations.py
index 21600b71..bff40016 100644
--- a/tests/test_api_integrations.py
+++ b/tests/test_api_integrations.py
@@ -24,6 +24,16 @@ def test_all_code_paths(self):
         error_checks = True
         tests = {
             "GetCombinedPluginConfigs": falcon.get_plugin_configs(),
+            "ExecuteCommandProxy": falcon.execute_command_proxy(config_auth_type="string",
+                        config_id="string",
+                        definition_id="string",
+                        id="string",
+                        operation_id="string",
+                        description="string",
+                        version=123,
+                        cookie={"Yes": "Please"},
+                        header={"NotThe": "Footer"}
+            ),
             "ExecuteCommand": falcon.execute_command(config_auth_type="string",
                         config_id="string",
                         definition_id="string",
diff --git a/tests/test_aspm.py b/tests/test_aspm.py
new file mode 100644
index 00000000..9f639403
--- /dev/null
+++ b/tests/test_aspm.py
@@ -0,0 +1,62 @@
+# test_aspm.py
+# This class tests the drift indicators service class
+
+# import json
+import os
+import sys
+
+# Authentication via the test_authorization.py
+from tests import test_authorization as Authorization
+
+# Import our sibling src folder into the path
+sys.path.append(os.path.abspath('src'))
+# Classes to test - manually imported from sibling folder
+from falconpy import ASPM
+
+auth = Authorization.TestAuthorization()
+config = auth.getConfigObject()
+falcon = ASPM(auth_object=config)
+AllowedResponses = [200, 201, 207, 400, 403, 404, 429, 500, 503]
+
+
+class TestASPM:
+    def test_all_code_paths(self):
+        error_checks = True
+        tests = {
+            "UpsertBusinessApplications": falcon.update_business_applications(name="something", persistent_signatures=["sig"]),
+            "GetExecutorNodes": falcon.get_executor_nodes(node_type="green"),
+            "UpdateExecutorNode": falcon.update_executor_node(additional_header="thing"),
+            "CreateExecutorNode": falcon.create_executor_node(additional_header="thing", use_jobs=False),
+            "DeleteExecutorNode": falcon.delete_node(id=42),
+            "DeleteExecutorNodeFail": falcon.delete_node(),
+            "GetIntegrationTasks": falcon.get_integration_tasks(category="something"),
+            "CreateIntegrationTask": falcon.create_integration_task(integration_task={"something": "different"}),
+            "UpdateIntegrationTask": falcon.update_integration_task(id=42, integration_task={"something": "else"}),
+            "DeleteIntegrationTask": falcon.delete_integration_task(id=42),
+            "RunIntegrationTask": falcon.run_integration_task(id=42, task_id=42),
+            "UpdateIntegrationTaskFail": falcon.update_integration_task(),
+            "DeleteIntegrationTaskFail": falcon.delete_integration_task(),
+            "RunIntegrationTaskFail": falcon.run_integration_task(),
+            "GetIntegrations": falcon.get_integrations(integration_type="something"),
+            "GetIntegrationTypes": falcon.get_integration_types(),
+            "CreateIntegration": falcon.create_integration(integration={"thing": "something"}),
+            "UpdateIntegration": falcon.update_integration(id=12345, integration={"data": "something"}, overwrite_fields=["banana"]),
+            "DeleteIntegration": falcon.delete_integration(id=12345),
+            "UpdateIntegrationFail": falcon.update_integration(),
+            "DeleteIntegrationFail": falcon.delete_integration(),
+            "ExecuteQuery": falcon.execute_query(query="something_interesting", select_fields={"fields":["whatever"]}),
+            "ServiceNowGetDeployments": falcon.get_servicenow_deployments(ql_filters="query_search"),
+            "ServiceNowGetServices": falcon.get_servicenow_services(ql_filters="query_search", order_by="green"),
+            "GetServicesCount": falcon.get_services_count(only_count=True),
+            "GetServiceViolationTypes": falcon.get_service_violation_types(filter="search", optional_time=3),
+            "GetTags": falcon.get_tags(limit=1, tag_name="chartreuse"),
+            "UpsertTags": falcon.update_tags(is_sensitive=False, entries=[{"name": "thing"}]),
+            "UpsertTags2": falcon.update_tags(is_sensitive=False),
+            "DeleteTags": falcon.delete_tags(is_sensitive=False, name="Bob_the_Tag", value="Priceless")
+        }
+        for key in tests:
+            if tests[key]["status_code"] not in AllowedResponses:
+                error_checks = False
+                # print(key)
+                # print(tests[key])
+        assert error_checks
diff --git a/tests/test_cloud_snapshots.py b/tests/test_cloud_snapshots.py
index 3435349a..a517421d 100644
--- a/tests/test_cloud_snapshots.py
+++ b/tests/test_cloud_snapshots.py
@@ -45,6 +45,10 @@ def test_get_credentials(self):
         """Pytest harness hook"""
         assert bool(falcon.get_credentials()["status_code"] in [*AllowedResponses, 500]) is True
 
+    def test_get_credentials_iac(self):
+        """Pytest harness hook"""
+        assert bool(falcon.get_iac_credentials()["status_code"] in [*AllowedResponses, 500]) is True
+
     @pytest.mark.skipif(config.base_url == "https://api.laggar.gcw.crowdstrike.com",
                         reason="Unit testing unavailable on US-GOV-1"
                         )
diff --git a/tests/test_container_images.py b/tests/test_container_images.py
index 70f3d264..61710671 100644
--- a/tests/test_container_images.py
+++ b/tests/test_container_images.py
@@ -16,7 +16,7 @@
 auth = Authorization.TestAuthorization()
 config = auth.getConfigObject()
 falcon = ContainerImages(auth_object=config)
-AllowedResponses = [200, 201, 207, 400, 404, 429]
+AllowedResponses = [200, 201, 207, 400, 403, 404, 429]
 
 
 class TestContainerImages:
@@ -32,7 +32,10 @@ def test_all_code_paths(self):
             "CombinedImageDetail": falcon.get_combined_detail(filter="repository:'testing'"),
             "ReadCombinedImagesExport": falcon.read_combined_export(filter="repository:'testing'"),
             "CombinedImageIssuesSummary": falcon.get_combined_issues_summary(filter="repository:'testing'"),
-            "CombinedImageVulnerabilitySummary": falcon.get_combined_vulnerabilities_summary(filter="repository:'testing'")
+            "CombinedImageVulnerabilitySummary": falcon.get_combined_vulnerabilities_summary(filter="repository:'testing'"),
+            "CombinedBaseImages": falcon.get_combined_base_images(),
+            "CreateBaseImageEntities": falcon.create_base_images(image_id="12345678", image_digest="1234", repository="bob", registry="aws", tag="bob"),
+            "DeleteBaseImages": falcon.delete_base_images("12345678")
         }
         for key in tests:
             if tests[key]["status_code"] not in AllowedResponses:
diff --git a/tests/test_custom_storage.py b/tests/test_custom_storage.py
index f4b982c3..ea62f749 100644
--- a/tests/test_custom_storage.py
+++ b/tests/test_custom_storage.py
@@ -28,6 +28,18 @@ def run_all_tests(self):
             "GetObject" : falcon.get(collection_name="whatever", object_key="whatever_else"),
             "PutObject" : falcon.upload(collection_name="whatever", object_key="whatever_else"),
             "DeleteObject" : falcon.delete(collection_name="whatever", object_key="whatever_else"),
+            "ListObjectsByVersion" : falcon.list_by_version(collection_name="Whatever"),
+            "SearchObjectsByVersion" : falcon.search_by_version(collection_name="whatever"),
+            "GetVersionedObject" : falcon.get_version(collection_name="whatever", object_key="whatever_else"),
+            "PutVersionedObject" : falcon.upload_version(collection_name="whatever", object_key="whatever_else"),
+            "DeleteVersionedObject" : falcon.delete_version(collection_name="whatever", object_key="whatever_else"),
+            "GetVersionedObjectMetadata" : falcon.version_metadata(collection_name="whatever", object_key="whatever_else"),
+            "ListObjectsByVersionWorks" : falcon.list_by_version(collection_name="Whatever", collection_version="42"),
+            "SearchObjectsByVersionWorks" : falcon.search_by_version(collection_name="whatever", collection_version="42"),
+            "GetVersionedObjectWorks" : falcon.get_version(collection_name="whatever", object_key="whatever_else", collection_version="42"),
+            "PutVersionedObjectWorks" : falcon.upload_version(collection_name="whatever", object_key="whatever_else", collection_version="42"),
+            "DeleteVersionedObjectWorks" : falcon.delete_version(collection_name="whatever", object_key="whatever_else", collection_version="42"),
+            "GetVersionedObjectMetadataWorks" : falcon.version_metadata(collection_name="whatever", object_key="whatever_else", collection_version="42"),
             "FailBecauseMissingCollectionNameListObjects" : falcon.list(),
             "FailBecauseMissingCollectionNameSearchObjects" : falcon.search(),
             "GetObjectMetadata" : falcon.metadata(collection_name="whatever", object_key="whatever_else"),
diff --git a/tests/test_datascanner.py b/tests/test_datascanner.py
new file mode 100644
index 00000000..775667a7
--- /dev/null
+++ b/tests/test_datascanner.py
@@ -0,0 +1,37 @@
+# test_datascanner.py
+# This class tests the DataScanner service class
+
+# import json
+import os
+import sys
+
+# Authentication via the test_authorization.py
+from tests import test_authorization as Authorization
+
+# Import our sibling src folder into the path
+sys.path.append(os.path.abspath('src'))
+# Classes to test - manually imported from sibling folder
+from falconpy import DataScanner
+
+auth = Authorization.TestAuthorization()
+config = auth.getConfigObject()
+falcon = DataScanner(auth_object=config)
+AllowedResponses = [200, 201, 207, 404, 406, 429, 500]
+
+class TestDataScanner:
+    def test_all_code_paths(self):
+        error_checks = True
+        tests = {
+            "handle": falcon.handle(),
+            "get_image_registry_credentials": falcon.get_image_registry_credentials(),
+            "get_data_scanner_tasks": falcon.get_data_scanner_tasks(scanner_id="12345678"),
+            "update_data_scanner_tasks": falcon.update_data_scanner_tasks(scanner_id="12345678", machine_id="BOB"),
+            "get_data_scanner_tasks_fail": falcon.get_data_scanner_tasks(),
+            "update_data_scanner_tasks_fail": falcon.update_data_scanner_tasks(scanner_id="12345678")
+        }
+        for key in tests:
+            if tests[key]["status_code"] not in AllowedResponses:
+                error_checks = False
+                # print(key)
+                # print(tests[key])
+        assert error_checks
diff --git a/tests/test_delivery_settings.py b/tests/test_delivery_settings.py
new file mode 100644
index 00000000..428e3e4a
--- /dev/null
+++ b/tests/test_delivery_settings.py
@@ -0,0 +1,33 @@
+# test_delivery settings.py
+# This class tests the delivery settings service class
+
+# import json
+import os
+import sys
+
+# Authentication via the test_authorization.py
+from tests import test_authorization as Authorization
+
+# Import our sibling src folder into the path
+sys.path.append(os.path.abspath('src'))
+# Classes to test - manually imported from sibling folder
+from falconpy import DeliverySettings
+
+auth = Authorization.TestAuthorization()
+config = auth.getConfigObject()
+falcon = DeliverySettings(auth_object=config)
+AllowedResponses = [200, 201, 207, 400, 429]
+
+class TestDeliverySettings:
+    def test_all_code_paths(self):
+        error_checks = True
+        tests = {
+            "GetDeliverySettings": falcon.get_delivery_settings(),
+            "PostDeliverySettings": falcon.create_delivery_settings(delivery_cadence="general_availability", delivery_type="sensor_operations")
+        }
+        for key in tests:
+            if tests[key]["status_code"] not in AllowedResponses:
+                error_checks = False
+                # print(key)
+                # print(tests[key])
+        assert error_checks
diff --git a/tests/test_detects.py b/tests/test_detects.py
index 066fc64c..899a110c 100644
--- a/tests/test_detects.py
+++ b/tests/test_detects.py
@@ -42,6 +42,8 @@ def service_detects_test_all(self):
             pytest.skip("Rate Limit hit")
         if check["body"]["resources"]:
             id_list = ",".join(check["body"]["resources"])
+        if not id_list:
+            id_list = ["1234567890"]
         tests = {
             "query_detects": falcon.query_detects(),
             "get_detect_summaries": falcon.get_detect_summaries(body={"ids": ["12345678"]}),
@@ -91,7 +93,10 @@ def service_detects_test_all(self):
     def service_detects_test_comment(self):
         # Unrelated to v1.3 updates
         # It appears the assigned_to_uuid value must be specified in order for this test to pass
-        if falcon.update_detects_by_ids(ids=falcon.query_detects(limit=1)["body"]["resources"], comment="FalconPy Unit Testing")["status_code"] in [200, 400]:
+        id_list = falcon.query_detects(limit=1).get("body").get("resources")
+        if not id_list:
+            return True  # False
+        if falcon.update_detects_by_ids(ids=id_list, comment="FalconPy Unit Testing")["status_code"] in [200, 400]:
             return True
         else:
             return False
diff --git a/tests/test_discover.py b/tests/test_discover.py
index 666c717f..d31b226c 100644
--- a/tests/test_discover.py
+++ b/tests/test_discover.py
@@ -63,6 +63,9 @@ def run_all_tests(self):
             "query_and_get_logins": falcon.get_logins(ids=logins_id_list),
             "query_and_get_applications": falcon.get_applications(ids=applications_id_list),
             "query_iot_hosts": falcon.get_iot_hosts(ids=assets_id_list),
+            "combined_applications": falcon.query_combined_applications(limit=1),
+            "combined_hosts": falcon.query_combined_hosts(limit=1)
+
         }
         for key in tests:
             if tests[key]["status_code"] not in AllowedResponses:
diff --git a/tests/test_downloads.py b/tests/test_downloads.py
new file mode 100644
index 00000000..e9781adf
--- /dev/null
+++ b/tests/test_downloads.py
@@ -0,0 +1,33 @@
+# test_downloads.py
+# This class tests the Downloads service class
+
+# import json
+import os
+import sys
+
+# Authentication via the test_authorization.py
+from tests import test_authorization as Authorization
+
+# Import our sibling src folder into the path
+sys.path.append(os.path.abspath('src'))
+# Classes to test - manually imported from sibling folder
+from falconpy import Downloads
+
+auth = Authorization.TestAuthorization()
+config = auth.getConfigObject()
+falcon = Downloads(auth_object=config)
+AllowedResponses = [200, 201, 207, 404, 429]
+
+class TestDownloads:
+    def test_all_code_paths(self):
+        error_checks = True
+        tests = {
+            "DownloadFile": falcon.download(file_name="the_file_named_jeff.txt", file_version="1"),
+            "EnumerateFile": falcon.enumerate()
+        }
+        for key in tests:
+            if tests[key]["status_code"] not in AllowedResponses:
+                error_checks = False
+                # print(key)
+                # print(tests[key])
+        assert error_checks
diff --git a/tests/test_drift_indicators.py b/tests/test_drift_indicators.py
index 06ab7f1a..527f5802 100644
--- a/tests/test_drift_indicators.py
+++ b/tests/test_drift_indicators.py
@@ -25,6 +25,7 @@ def test_all_code_paths(self):
         tests = {
             "GetDriftIndicatorsValuesByDate": falcon.get_drift_indicators_by_date(filter="cid:'12345678901234567890123456789012'"),
             "ReadDriftIndicatorsCount": falcon.read_drift_indicator_counts(filter="cid:'12345678901234567890123456789012'"),
+            "ReadDriftIndicatorEntities": falcon.read_drift_indicator_entities(ids="1234567890"),
             "SearchAndReadDriftIndicatorEntities": falcon.search_and_read_drift_indicators(filter="cid:'12345678901234567890123456789012'"),
             "SearchDriftIndicators": falcon.search_drift_indicators(filter="cid:'12345678901234567890123456789012'"),
         }
diff --git a/tests/test_event_streams.py b/tests/test_event_streams.py
index ff6b41c5..04e541c8 100644
--- a/tests/test_event_streams.py
+++ b/tests/test_event_streams.py
@@ -5,6 +5,7 @@
 import os
 import sys
 import datetime
+from datetime import datetime, timezone
 import platform
 import requests
 import pytest
@@ -38,37 +39,42 @@ def stream_list():
     def stream_refresh():
         """refresh_active_stream"""
         avail = falcon.listAvailableStreamsOAuth2(parameters={"appId": f"{APP_ID}"})
-        current_time = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S +0000')
+        current_time = datetime.now(timezone.utc).strftime('%a, %d %b %Y %H:%M:%S +0000')
         headers = {
             'Authorization': 'Token %s' % (
                 avail["body"]["resources"][0]["sessionToken"]["token"]
                 ), 'Date': current_time, 'Connection': 'Keep-Alive'
             }
-        stream = requests.get(avail["body"]["resources"][0]["dataFeedURL"], headers=headers, stream=True)
-        with stream:
-            result = falcon.refreshActiveStreamSession(app_id=f"{APP_ID}",
-                                                       action_name="refresh_active_stream_session",
-                                                       partition=0
-                                                       )
-            return bool(result["status_code"] in AllowedResponses)
+        if avail["body"]["resources"]:
+            stream = requests.get(avail["body"]["resources"][0]["dataFeedURL"], headers=headers, stream=True)
+            with stream:
+                result = falcon.refreshActiveStreamSession(app_id=f"{APP_ID}",
+                                                        action_name="refresh_active_stream_session",
+                                                        partition=0
+                                                        )
+                return bool(result["status_code"] in AllowedResponses)
+        else:
+            pytest.skip("Rate limited")
 
     @staticmethod
     def stream_refresh_default_action():
         """refresh_active_stream"""
         avail = falcon.listAvailableStreamsOAuth2(parameters={"appId": f"{APP_ID}"})
-        current_time = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S +0000')
+        current_time = datetime.now(timezone.utc).strftime('%a, %d %b %Y %H:%M:%S +0000')
         headers = {
             'Authorization': 'Token %s' % (
                 avail["body"]["resources"][0]["sessionToken"]["token"]
                 ), 'Date': current_time, 'Connection': 'Keep-Alive'
             }
-        stream = requests.get(avail["body"]["resources"][0]["dataFeedURL"], headers=headers, stream=True)
-        with stream:
-            result = falcon.refreshActiveStreamSession(appId=f"{APP_ID}",
-                                                       partition="0"
-                                                       )
-            return bool(result["status_code"] in AllowedResponses)
-
+        if avail["body"]["resources"]:
+            stream = requests.get(avail["body"]["resources"][0]["dataFeedURL"], headers=headers, stream=True)
+            with stream:
+                result = falcon.refreshActiveStreamSession(appId=f"{APP_ID}",
+                                                        partition="0"
+                                                        )
+                return bool(result["status_code"] in AllowedResponses)
+        else:
+            pytest.skip("Rate limited")
 
     @staticmethod
     def stream_errors():
diff --git a/tests/test_exposure_management.py b/tests/test_exposure_management.py
index 20e54660..e4c8863b 100644
--- a/tests/test_exposure_management.py
+++ b/tests/test_exposure_management.py
@@ -56,6 +56,7 @@ def test_all_code_paths(self):
             "get_external_assets": falcon.get_assets("123456"),
             "patch_external_assets": falcon.update_assets(cid="whatever", action="whatever"),
             "query_external_assets": falcon.query_assets(),
+            "delete_assets": falcon.delete_assets(ids="12345678", description="unit_testing")
         }
         for key in tests:
             if tests[key]["status_code"] not in AllowedResponses:
diff --git a/tests/test_falcon_container.py b/tests/test_falcon_container.py
index 89253062..fd02b4e2 100644
--- a/tests/test_falcon_container.py
+++ b/tests/test_falcon_container.py
@@ -13,14 +13,16 @@
 
 auth = Authorization.TestAuthorization()
 config = auth.getConfigObject()
-falcon = FalconContainer(auth_object=config)
+falcon = FalconContainer(auth_object=config, timeout=3)
 uber = APIHarness(client_id=falcon.auth_object.creds["client_id"],
                   client_secret=falcon.auth_object.creds["client_secret"],
-                  base_url=falcon.auth_object.base_url
+                  base_url=falcon.auth_object.base_url,
+                  timeout=3
                   )
 uber2 = APIHarnessV2(client_id=falcon.auth_object.creds["client_id"],
                      client_secret=falcon.auth_object.creds["client_secret"],
-                     base_url=falcon.auth_object.base_url
+                     base_url=falcon.auth_object.base_url,
+                     timeout=3
                      )
 AllowedResponses = [200, 201, 204, 400, 403, 404, 429, 500, 502]  # Allowing no content returned as code paths are confirmed
 
diff --git a/tests/test_identity_protection.py b/tests/test_identity_protection.py
index 9f15e1dc..54222bde 100644
--- a/tests/test_identity_protection.py
+++ b/tests/test_identity_protection.py
@@ -76,7 +76,11 @@ def service_idp_remaining_tests(self):
         tests = {
             "GetSensorAggregates": falcon.get_sensor_aggregates(date_ranges=[{}]),
             "GetSensorDetails": falcon.get_sensor_details(ids="12345678"),
-            "QuerySensorsByFilter": falcon.query_sensors(limit=1)
+            "QuerySensorsByFilter": falcon.query_sensors(limit=1),
+            "get_policy_rules": falcon.get_policy_rules(ids="12345678"),
+            "post_policy_rules": falcon.create_policy_rule(simulation_mode=True),
+            "delete_policy_rules": falcon.delete_policy_rules("12345678"),
+            "get_policy_rules_query": falcon.query_policy_rules(),
         }
         for key in tests:
             if tests[key]["status_code"] not in AllowedResponses:
diff --git a/tests/test_image_assessment_policies.py b/tests/test_image_assessment_policies.py
index d9da069a..19f41839 100644
--- a/tests/test_image_assessment_policies.py
+++ b/tests/test_image_assessment_policies.py
@@ -17,7 +17,7 @@
 auth = Authorization.TestAuthorization()
 config = auth.getConfigObject()
 falcon = ImageAssessmentPolicies(auth_object=config)
-AllowedResponses = [200, 201, 204, 207, 400, 502]  # Allowing 502 from CreatePolicyGroups for now
+AllowedResponses = [200, 201, 204, 207, 400, 403, 502]  # Allowing 502 from CreatePolicyGroups for now
 
 
 class TestImageAssessmentPolicies:
diff --git a/tests/test_kubernetes_protection.py b/tests/test_kubernetes_protection.py
index a65a37c7..93f2f1db 100644
--- a/tests/test_kubernetes_protection.py
+++ b/tests/test_kubernetes_protection.py
@@ -79,7 +79,12 @@ def serviceKubeProtect_RunAllTests(self):
             "ReadNodeCombined": falcon.read_nodes_combined(filter="whatever"),
             "ReadPodCombined": falcon.read_pods_combined(filter="whatever"),
             "ReadKubernetesIomEntities": falcon.read_iom_entities(filter="whatever"),
-            "SearchKubernetesIoms": falcon.search_ioms(filter="whatever")
+            "SearchKubernetesIoms": falcon.search_ioms(filter="whatever"),
+            "ReadContainerEnrichment": falcon.read_container_enrichment(filter="whatevers"),
+            "ReadPodEnrichment": falcon.read_pod_enrichment(filter="something_something_something_darkside"),
+            "ReadDeploymentEnrichment": falcon.read_deployment_enrichment(filter="something_else"),
+            "ReadNamespacesByDateRangeCount": falcon.read_namespaces_by_date_range_count(),
+            "ReadNamespaceCount": falcon.read_namespace_count(filter="something"),
         }
 
         for key in tests:
diff --git a/tests/test_message_center.py b/tests/test_message_center.py
index 20fc11f6..fbc23ec3 100644
--- a/tests/test_message_center.py
+++ b/tests/test_message_center.py
@@ -12,7 +12,7 @@
 auth = Authorization.TestAuthorization()
 config = auth.getConfigObject()
 falcon = MessageCenter(auth_object=config)
-AllowedResponses = [200, 400, 403, 429, 405]  # pre-1.2.16 - UpdateCase appears to be decomm'd
+AllowedResponses = [200, 400, 403, 429, 405, 500]  # pre-1.2.16 - UpdateCase appears to be decomm'd
 
 
 class TestMessageCenter:
diff --git a/tests/test_mobile_enrollment.py b/tests/test_mobile_enrollment.py
index 5e7b3540..a097de21 100644
--- a/tests/test_mobile_enrollment.py
+++ b/tests/test_mobile_enrollment.py
@@ -3,7 +3,7 @@
 """
 import os
 import sys
-from datetime import datetime, timedelta
+from datetime import datetime, timedelta, timezone
 # Authentication via the test_authorization.py
 from tests import test_authorization as Authorization
 # Import our sibling src folder into the path
@@ -25,7 +25,7 @@ def test_device_enroll(self):
         result = falcon.device_enroll(
             action_name="re-enroll",
             email_addresses="no_reply@crowdstrike.com",
-            expires_at=(datetime.utcnow() + timedelta(minutes=5)).strftime("%Y-%m-%dT%H:%M:%SZ")
+            expires_at=(datetime.now(timezone.utc) + timedelta(minutes=5)).strftime("%Y-%m-%dT%H:%M:%SZ")
         )
         assert bool(result["status_code"] in AllowedResponses) is True
 
@@ -34,6 +34,6 @@ def test_device_enroll_v4(self):
         result = falcon.device_enroll_v4(
             action_name="re-enroll",
             email_addresses="no_reply@crowdstrike.com",
-            expires_at=(datetime.utcnow() + timedelta(minutes=5)).strftime("%Y-%m-%dT%H:%M:%SZ")
+            expires_at=(datetime.now(timezone.utc) + timedelta(minutes=5)).strftime("%Y-%m-%dT%H:%M:%SZ")
         )
         assert bool(result["status_code"] in AllowedResponses) is True
diff --git a/tests/test_quick_scan_pro.py b/tests/test_quick_scan_pro.py
new file mode 100644
index 00000000..91cfa5a8
--- /dev/null
+++ b/tests/test_quick_scan_pro.py
@@ -0,0 +1,44 @@
+# test_quick_scam.py
+# This class tests the QuickScan Pro service class
+
+# import json
+import os
+import sys
+
+# Authentication via the test_authorization.py
+from tests import test_authorization as Authorization
+
+# Import our sibling src folder into the path
+sys.path.append(os.path.abspath('src'))
+# Classes to test - manually imported from sibling folder
+from falconpy import QuickScanPro
+
+auth = Authorization.TestAuthorization()
+config = auth.getConfigObject()
+falcon = QuickScanPro(auth_object=config)
+AllowedResponses = [200, 201, 207, 429]  # Adding rate-limiting as an allowed response for now
+
+
+class TestQuickScanPro:
+
+    def pro_service_scan_test_all(self):
+        error_checks = True
+        PAYLOAD = open("tests/testfile.png", 'rb').read()
+        tests = {
+            "upload_file": falcon.upload_file(file=PAYLOAD, scan=False),
+            "upload_file_fail": falcon.upload_file(),
+            "delete_file": falcon.delete_file("123456NOTAHASH"),
+            "get_scan_result": falcon.get_scan_result("123456NOTAHASH"),
+            "launch_scan": falcon.launch_scan(sha256="123456NOTAHASH"),
+            "launch_scan_fail": falcon.launch_scan(),
+            "delete_scan_result": falcon.delete_scan_result("123456NOTAHASH"),
+            "query_scan_results": falcon.query_scan_results(filter="123456NOTAHASH", limit=1)
+        }
+        for key in tests:
+            if tests[key]["status_code"] == 500:
+                error_checks = False
+
+        return error_checks
+
+    def test_all_functionality(self):
+        assert self.pro_service_scan_test_all() is True
diff --git a/tests/test_sensor_usage.py b/tests/test_sensor_usage.py
new file mode 100644
index 00000000..8870bfce
--- /dev/null
+++ b/tests/test_sensor_usage.py
@@ -0,0 +1,33 @@
+# test_sensor_usage.py
+# This class tests the sensor usage service class
+
+# import json
+import os
+import sys
+
+# Authentication via the test_authorization.py
+from tests import test_authorization as Authorization
+
+# Import our sibling src folder into the path
+sys.path.append(os.path.abspath('src'))
+# Classes to test - manually imported from sibling folder
+from falconpy import SensorUsage
+
+auth = Authorization.TestAuthorization()
+config = auth.getConfigObject()
+falcon = SensorUsage(auth_object=config)
+AllowedResponses = [200, 201, 207, 400, 404, 429]
+
+
+class TestSensorUsage:
+    def test_all_code_paths(self):
+        error_checks = True
+        tests = {
+            "GetWeeklySensorUsage": falcon.get_weekly_usage()
+        }
+        for key in tests:
+            if tests[key]["status_code"] not in AllowedResponses:
+                error_checks = False
+                # print(key)
+                # print(tests[key])
+        assert error_checks