Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
ad829a8
Update AgentInvocation endpoint definitions
alhumaw Oct 7, 2026
1f1f38c
Update AgentVersions endpoint definitions
alhumaw Oct 7, 2026
2df8cca
Update Agents endpoint definitions
alhumaw Oct 7, 2026
d5c9b50
Update AIDR endpoint definitions
alhumaw Oct 7, 2026
447b4ac
Update Audit endpoint definitions
alhumaw Oct 7, 2026
7571aa6
Update BrowserSecurity: add 5 new operations
alhumaw Oct 7, 2026
6cd1855
Update CaseManagement: add 5 new operations
alhumaw Oct 7, 2026
054640d
Update CloudGoogleCloudRegistration endpoint definitions
alhumaw Oct 7, 2026
605c83e
Update CloudOCIRegistration endpoint definitions
alhumaw Oct 7, 2026
b379f91
Update CloudPolicies endpoint definitions
alhumaw Oct 7, 2026
31b66de
Update CloudSecurity endpoint definitions
alhumaw Oct 7, 2026
6a042cf
Update CloudSecurityAssets endpoint definitions
alhumaw Oct 7, 2026
e34f07c
Update DataProtectionConfiguration endpoint definitions
alhumaw Oct 7, 2026
34554e1
Add new EvalCases service collection
alhumaw Oct 7, 2026
ff5fba9
Add new EvalDatasetEntries service collection
alhumaw Oct 7, 2026
bf1a789
Add new EvalDatasets service collection
alhumaw Oct 7, 2026
0f79977
Add new EvalEvaluators service collection
alhumaw Oct 7, 2026
095a85c
Add new EvalRuns service collection
alhumaw Oct 7, 2026
e752415
Update FalconXSandbox endpoint definitions
alhumaw Oct 7, 2026
8eff620
Update Hosts endpoint definitions
alhumaw Oct 7, 2026
1c685ea
Update Intel endpoint definitions
alhumaw Oct 7, 2026
34e6ca1
Update ITAutomation: add 13 new operations
alhumaw Oct 7, 2026
6f9acdb
Update KnowledgeBaseAuditEvents endpoint definitions
alhumaw Oct 7, 2026
2f8c5be
Update KnowledgeBaseFiles endpoint definitions
alhumaw Oct 7, 2026
bd16c84
Update KnowledgeBases endpoint definitions
alhumaw Oct 7, 2026
6cdf5b0
Update FlightControl endpoint definitions
alhumaw Oct 7, 2026
bad8d49
Update NGSIEM: add 5 new operations
alhumaw Oct 7, 2026
6ac421a
Update QuickScanPro endpoint definitions
alhumaw Oct 7, 2026
ebb7889
Update RealTimeResponse endpoint definitions
alhumaw Oct 7, 2026
bc0bf94
Update Recon endpoint definitions
alhumaw Oct 7, 2026
7f88322
Update SaasSecurity: add 2 new operations
alhumaw Oct 7, 2026
f69a84a
Update SampleUploads endpoint definitions
alhumaw Oct 7, 2026
0ae909f
Update Skills endpoint definitions
alhumaw Oct 7, 2026
f6e45fb
Update Spans endpoint definitions
alhumaw Oct 7, 2026
0a0cf1e
Update SpotlightVulnerabilities endpoint definitions
alhumaw Oct 7, 2026
5dddd9f
Update Stream endpoint definitions
alhumaw Oct 7, 2026
c4c0888
Update Tools endpoint definitions
alhumaw Oct 7, 2026
5fc5207
Update UserManagement: add 4 new operations
alhumaw Oct 7, 2026
02d25b6
Regenerate type stubs
alhumaw Oct 7, 2026
cc66f94
Update AgenticStudio parent service collection
alhumaw Oct 7, 2026
f977ba4
Update _version.py
alhumaw Oct 7, 2026
5caaa1d
Update Eval Runs Service Collection. Removing 405 operation for now
alhumaw Oct 7, 2026
6d6ceaf
Update IT Automation Service Collection. Lint
alhumaw Oct 7, 2026
80ed8f9
Rename AgenticStudio parent service collection to Charlotte
alhumaw Oct 8, 2026
d2d50df
Update CHANGELOG
alhumaw Oct 7, 2026
6be0e81
Update wordlist.txt
alhumaw Oct 8, 2026
d648946
Document parent service classes in README
alhumaw Oct 8, 2026
09d6465
Warn on every operation the API spec marks deprecated
alhumaw Oct 26, 2026
ad21044
Fix ssl_verify discarding CA bundle path passed to constructors (#1521)
jshcodes Oct 30, 2026
41bcc5e
Update wordlist.txt
jshcodes Oct 30, 2026
6d6c6a3
Remove unit test for decommissioned operation
jshcodes Nov 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ BatchGetCmd
BatchGetCmdStatus
BatchInitSessions
BatchRefreshSessions
booleans
CAs
CCID
CID
CIDs
Expand Down Expand Up @@ -1999,6 +2001,7 @@ AgentTemplates
AgentInvocation
AgentStudio
AgenticStudio
Charlotte
Khaitan
Yashvardhan
MRX
Expand All @@ -2008,3 +2011,38 @@ ManuelFCastillo
khaitan
yashvardhan
Agentic
Eval
eval
GetAgentInvocationV
PatchAgentInvocationV
GetAgentVersionsV
QueryAgentVersionsV
CreateOrEditAgentExternalV
DeleteAgentV
GetAgentsV
PatchAgentExternalV
QueryAgentsV
CombinedKnowledgeBaseAuditEventsV
EntitiesKnowledgeBaseAuditEventsV
QueriesKnowledgeBaseAuditEventsV
EntitiesKnowledgeBaseFilesCreateV
EntitiesKnowledgeBaseFilesDeleteV
EntitiesKnowledgeBaseFilesDownloadV
EntitiesKnowledgeBaseFilesUpdateV
EntitiesKnowledgeBaseFilesV
QueriesKnowledgeBaseFilesV
CombinedKnowledgeBasesV
EntitiesKnowledgeBasesUpdateV
EntitiesKnowledgeBasesV
QueriesKnowledgeBasesV
EntitiesSkillsCreateV
EntitiesSkillsDeleteV
EntitiesSkillsDownloadV
EntitiesSkillsUpdateV
EntitiesSkillsV
QueriesSkillsV
EntitiesSpansV
QueriesSpansV
StreamInvocationResponseV
EntitiesToolsV
QueriesToolsV
227 changes: 227 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,230 @@
# Version 1.6.7
## Added features and functionality
+ Updated: Renamed the __AgenticStudio__ parent service collection to __Charlotte__, since every one of its sub-services requires a Charlotte AI scope, and added __Eval Cases__, __Eval Dataset Entries__, __Eval Datasets__, __Eval Evaluators__ and __Eval Runs__ to it. `AgenticStudio` remains available as a backward compatible alias, including from `falconpy.agentic_studio`.
- `__init__.py`
- `agentic_studio.py`
- `charlotte.py`

+ Updated: Added `project_id` as an allowed parameter in the _GetAgentInvocationV3_ and _PatchAgentInvocationV3_ operations within the __Agent Invocation__ service collection.
- `_endpoint/_agent_invocation.py`
- `_payload/_agent_invocation.py`
- `agent_invocation.py`

+ Updated: Added `project_id` as an allowed parameter in the _GetAgentVersionsV1_ and _QueryAgentVersionsV1_ operations within the __Agent Versions__ service collection.
- `_endpoint/_agent_versions.py`
- `agent_versions.py`

+ Updated: Added `project_id` as an allowed parameter in the _DeleteAgentV1_, _GetAgentsV2_, _PatchAgentExternalV3_, and _QueryAgentsV2_ operations and added `wait_for_ready` as an allowed parameter in the _CreateOrEditAgentExternalV3_ and _PatchAgentExternalV3_ operations within the __Agents__ service collection.
- `_endpoint/_agents.py`
- `_payload/_agents.py`
- `agents.py`

+ Added: Added five new operations to the __Browser Security__ service collection.
- _get_sensitive_data_profiles_
- _create_sensitive_data_profile_
- _delete_sensitive_data_profile_
- _update_sensitive_data_profile_
- _query_sensitive_data_profiles_
- `_endpoint/_browser_security.py`
- `_payload/__init__.py`
- `_payload/_browser_security.py`
- `browser_security.py`
> Unit testing expanded to complete code coverage.
- `tests/test_browser_security.py`

+ Added: Added five new operations to the __Case Management__ service collection.
- _add_case_alert_evidence_v2_
- _add_case_access_tags_
- _remove_case_access_tags_
- _add_case_custom_evidence_
- _add_case_user_evidence_
- `_endpoint/_case_management.py`
- `_payload/__init__.py`
- `_payload/_case_management.py`
- `case_management.py`
> Unit testing expanded to complete code coverage.
- `tests/test_case_management.py`

+ Added: New __Eval Cases__ service collection with two operations.
- _get_eval_cases_
- _query_eval_cases_
- `_endpoint/__init__.py`
- `_endpoint/_eval_cases.py`
- `_payload/__init__.py`
- `__init__.py`
- `eval_cases.py`
> Unit testing expanded to complete code coverage.
- `tests/test_eval_cases.py`

+ Added: New __Eval Dataset Entries__ service collection with five operations.
- _get_eval_dataset_entries_
- _update_eval_dataset_entry_
- _create_eval_dataset_entry_
- _delete_eval_dataset_entry_
- _query_eval_dataset_entries_
- `_endpoint/__init__.py`
- `_endpoint/_eval_dataset_entries.py`
- `_payload/__init__.py`
- `_payload/_eval_dataset_entries.py`
- `__init__.py`
- `eval_dataset_entries.py`
> Unit testing expanded to complete code coverage.
- `tests/test_eval_dataset_entries.py`

+ Added: New __Eval Datasets__ service collection with six operations.
- _download_eval_dataset_
- _get_eval_datasets_
- _update_eval_dataset_
- _create_eval_dataset_
- _delete_eval_dataset_
- _query_eval_datasets_
- `_endpoint/__init__.py`
- `_endpoint/_eval_datasets.py`
- `_payload/__init__.py`
- `_payload/_eval_datasets.py`
- `__init__.py`
- `eval_datasets.py`
> Unit testing expanded to complete code coverage.
- `tests/test_eval_datasets.py`

+ Added: New __Eval Evaluators__ service collection with five operations.
- _get_eval_evaluators_
- _update_eval_evaluator_
- _create_eval_evaluator_
- _delete_eval_evaluator_
- _query_eval_evaluators_
- `_endpoint/__init__.py`
- `_endpoint/_eval_evaluators.py`
- `_payload/__init__.py`
- `_payload/_eval_evaluators.py`
- `__init__.py`
- `eval_evaluators.py`
> Unit testing expanded to complete code coverage.
- `tests/test_eval_evaluators.py`

+ Added: New __Eval Runs__ service collection with five operations.
- _get_eval_runs_
- _create_eval_run_
- _delete_eval_run_
- _perform_eval_run_action_
- _query_eval_runs_
- `_endpoint/__init__.py`
- `_endpoint/_eval_runs.py`
- `_payload/__init__.py`
- `_payload/_eval_runs.py`
- `__init__.py`
- `eval_runs.py`
> Unit testing expanded to complete code coverage.
- `tests/test_eval_runs.py`

+ Updated: Added `device_policies.cloud-container-workload.applied`, `device_policies.cloud-container-workload.policy_id`, `device_policies.cloud-container-workload.policy_type` as allowed `sort` values in the _CombinedHiddenDevicesByFilter_ and _CombinedDevicesByFilter_ operations and added `skip_membership_validation` as an allowed parameter in the _entities_perform_action_ operation within the __Hosts__ service collection.
- `_endpoint/_hosts.py`
- `hosts.py`

+ Added: Added 13 new operations to the __IT Automation__ service collection.
- _aggregate_patch_deployment_configs_
- _aggregate_patch_deployment_executions_
- _aggregate_patch_host_deployments_
- _query_combined_patch_deployment_configs_
- _query_combined_patch_deployment_executions_
- _query_combined_host_deployment_patches_
- _query_combined_host_deployments_
- _query_combined_os_assessment_scan_
- _query_combined_os_assessments_
- _create_patch_deployment_config_
- _delete_patch_deployment_configs_
- _update_patch_deployment_config_
- _cancel_patch_deployment_executions_
- `_endpoint/_it_automation.py`
- `_payload/__init__.py`
- `_payload/_it_automation.py`
- `it_automation.py`
> Unit testing expanded to complete code coverage.
- `tests/test_it_automation.py`

+ Updated: Added `project_id` as an allowed parameter in the _CombinedKnowledgeBaseAuditEventsV1_, _EntitiesKnowledgeBaseAuditEventsV1_, and _QueriesKnowledgeBaseAuditEventsV1_ operations within the __Knowledge Base Audit Events__ service collection.
- `_endpoint/_knowledge_base_audit_events.py`
- `knowledge_base_audit_events.py`

+ Updated: Added `project_id` as an allowed parameter in the _EntitiesKnowledgeBaseFilesDownloadV1_, _EntitiesKnowledgeBaseFilesV1_, _EntitiesKnowledgeBaseFilesUpdateV1_, _EntitiesKnowledgeBaseFilesCreateV1_, _EntitiesKnowledgeBaseFilesDeleteV1_, and _QueriesKnowledgeBaseFilesV1_ operations within the __Knowledge Base Files__ service collection.
- `_endpoint/_knowledge_base_files.py`
- `knowledge_base_files.py`

+ Updated: Added `project_id` as an allowed parameter in the _CombinedKnowledgeBasesV1_, _EntitiesKnowledgeBasesV1_, _EntitiesKnowledgeBasesUpdateV1_, and _QueriesKnowledgeBasesV1_ operations within the __Knowledge Bases__ service collection.
- `_endpoint/_knowledge_bases.py`
- `_payload/_knowledge_bases.py`
- `knowledge_bases.py`

+ Added: Added five new operations to the __NGSIEM__ service collection.
- _get_scheduled_report_
- _create_scheduled_report_
- _delete_scheduled_report_
- _update_scheduled_report_
- _query_scheduled_reports_
- `_endpoint/_ngsiem.py`
- `_payload/__init__.py`
- `_payload/_ngsiem.py`
- `ngsiem.py`
> Unit testing expanded to complete code coverage.
- `tests/test_ngsiem.py`

+ Updated: Added `scan_mode` as an allowed parameter and updated the `file` and `scan` parameter descriptions in the _UploadFileQuickScanPro_ operation within the __Quick Scan Pro__ service collection.
- `_endpoint/_quick_scan_pro.py`
- `quick_scan_pro.py`

+ Added: Added two new operations to the __SaaS Security__ service collection.
- _set_check_impact_
- _get_security_check_change_log_
- `_endpoint/_saas_security.py`
- `_payload/__init__.py`
- `_payload/_saas_security.py`
- `saas_security.py`
> Unit testing expanded to complete code coverage.
- `tests/test_saas_security.py`

+ Updated: Added `project_id` as an allowed parameter in the _EntitiesSkillsDownloadV2_, _EntitiesSkillsV1_, _EntitiesSkillsUpdateV1_, _EntitiesSkillsCreateV1_, _EntitiesSkillsDeleteV1_, and _QueriesSkillsV1_ operations within the __Skills__ service collection.
- `_endpoint/_skills.py`
- `skills.py`

+ Updated: Added `project_id` as an allowed parameter in the _EntitiesSpansV1_ and _QueriesSpansV1_ operations within the __Spans__ service collection.
- `_endpoint/_spans.py`
- `spans.py`

+ Updated: Added `project_id` as an allowed parameter in the _StreamInvocationResponseV1_ operation within the __Stream__ service collection.
- `_endpoint/_stream.py`
- `stream.py`

+ Updated: Added `project_id` as an allowed parameter in the _EntitiesToolsV1_ and _QueriesToolsV1_ operations within the __Tools__ service collection.
- `_endpoint/_tools.py`
- `tools.py`

+ Added: Added four new operations to the __User Management__ service collection.
- _get_permission_groups_
- _get_permissions_
- _get_role_permissions_
- _query_permissions_
- `_endpoint/_user_management.py`
- `_payload/__init__.py`
- `_payload/_user_management.py`
- `user_management.py`
> Unit testing expanded to complete code coverage.
- `tests/test_user_management.py`

## Issues resolved
+ Fixed: A CA_BUNDLE path (file or directory of trusted certificates) provided to the `ssl_verify` keyword was silently discarded and replaced with `True` when passed to the constructor of the Uber Class (`APIHarnessV2`), the __OAuth2__ class, or any Service Class. Requests were then verified against the default trust store, breaking connectivity behind TLS-inspecting proxies and private CAs. This was a regression introduced in v1.3.0; the legacy Uber Class and v1.2.x Service Classes accepted a path. The constructor and the `ssl_verify` property setter now share the same handling: booleans and CA_BUNDLE paths (`str` or `os.PathLike`) are passed to requests, while empty strings and unsupported types fall back to `True` so verification is never disabled unintentionally. Closes #1521.
- `_api_request/_request.py`
- `_api_request/_request_connection.py`
- `_auth_object/_falcon_interface.py`
- `_auth_object/_interface_config.py`
- `_auth_object/_uber_interface.py`
- `_service_class/_base_service_class.py`
- `_service_class/_service_class.py`
- `_util/_functions.py`
- `oauth2.py`
> Unit testing expanded to cover `ssl_verify` normalization and CA_BUNDLE path handling.
- `tests/test_ssl_verify.py`
- Thanks go out to @tsullivan06 for identifying and reporting this issue! 🙇

# Version 1.6.6
## Added Features and functionality
+ Added: New __AgenticStudio__ parent service collection aggregating all 12 Agentic Studio sub-services via multiple inheritance.
Expand Down
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,35 @@ Representing a single CrowdStrike Falcon API service collection, each Service Cl
For each CrowdStrike Falcon API service collection, a matching Service Class is available in the FalconPy library. For a complete list of service collections and their related Service Class, please review the [Operations by Collection](https://developer.crowdstrike.com/api-reference/operations-by-collection/) page on the [CrowdStrike Developer Center](https://developer.crowdstrike.com).


#### Parent Service Classes
Some CrowdStrike Falcon API service collections are closely related. A _Parent Service Class_ combines these service collections into a single class using multiple inheritance, providing a method for [every operation available](https://developer.crowdstrike.com/api-reference/operations-by-collection/) within each of the service collections it includes. The Service Class for each individual service collection remains available.

<!-- specter: parent service classes -->
| Parent Service Class | Included Service Classes |
| :-- | :-- |
| `Charlotte` | `Agents`, `AgentInvocation`, `AgentTemplates`, `AgentVersions`, `KnowledgeBases`, `KnowledgeBaseFiles`, `KnowledgeBaseAuditEvents`, `Models`, `Skills`, `Spans`, `Tools`, `Stream`, `EvalCases`, `EvalDatasetEntries`, `EvalDatasets`, `EvalEvaluators`, `EvalRuns` |
| `ContainerSecurity` | `ContainerAlerts`, `ContainerDetections`, `ContainerImageCompliance`, `ContainerImages`, `ContainerVulnerabilities`, `DriftIndicators`, `ImageAssessmentPolicies` |
| `Firewall` | `FirewallPolicies`, `FirewallManagement` |
| `Foundry` | `FoundryLookupFiles`, `FoundryLogScale`, `CustomStorage`, `FaaSExecution` |
| `NetworkScan` | `NetworkScanGlobalConfigs`, `NetworkScanScanRunReports`, `NetworkScanScanRuns`, `NetworkScanScanners`, `NetworkScanTemplates`, `NetworkScanNetworks`, `NetworkScanScans`, `NetworkScanZones`, `NetworkScanDetections` |
| `Serverless` | `ServerlessExports`, `ServerlessVulnerabilities` |
| `Spotlight` | `SpotlightVulnerabilities`, `SpotlightVulnerabilityMetadata`, `SpotlightEvaluationLogic` |
<!-- /specter: parent service classes -->

```python
import os
from falconpy import Charlotte

charlotte = Charlotte(client_id=os.getenv("FALCON_CLIENT_ID"),
client_secret=os.getenv("FALCON_CLIENT_SECRET")
)

# Operations from the Agents and Eval Datasets service collections are available from the same class
agents = charlotte.query_studio_agents(limit=10)
datasets = charlotte.query_eval_datasets(limit=10)
```


#### Service Class benefits

- Closely follows Python and OpenAPI best practice for code style and syntax. PEP-8 compliant.
Expand Down
15 changes: 12 additions & 3 deletions src/falconpy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
from .agent_invocation import AgentInvocation
from .agent_templates import AgentTemplates
from .agent_versions import AgentVersions
from .agentic_studio import AgenticStudio
from .charlotte import Charlotte
from .agents import Agents
from .aidr import AIDR
from .alerts import Alerts
Expand Down Expand Up @@ -164,6 +164,11 @@
from .discover import Discover
from .downloads import Downloads
from .drift_indicators import DriftIndicators
from .eval_cases import EvalCases
from .eval_dataset_entries import EvalDatasetEntries
from .eval_datasets import EvalDatasets
from .eval_evaluators import EvalEvaluators
from .eval_runs import EvalRuns
from .event_streams import EventStreams
from .exposure_management import ExposureManagement
from .faas_execution import FaaSExecution
Expand Down Expand Up @@ -328,13 +333,17 @@
"CodeSecurity", "NetworkContainment",
"NetworkScanDetections", "Skills",
"Guardian", "Seraphic",
"AgenticStudio",
"Charlotte",
"ContainerSecurity",
"Spotlight",
"Serverless",
"Firewall",
"Foundry"
"Foundry", "EvalCases",
"EvalDatasetEntries", "EvalDatasets",
"EvalEvaluators", "EvalRuns",
"AgenticStudio"
]
AgenticStudio = Charlotte
Seraphic = BrowserSecurity
Guardian = AIDR
"""
Expand Down
2 changes: 1 addition & 1 deletion src/falconpy/_api_request/_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,6 @@ def timeout(self) -> Optional[Union[int, tuple]]:
return self.connection.timeout

@property
def verify(self) -> bool:
def verify(self) -> Union[bool, str]:
"""Return the SSL verification setting."""
return self.connection.verify
2 changes: 1 addition & 1 deletion src/falconpy/_api_request/_request_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class RequestConnection:
# | | | | | \ | |__] |__| | |___ ___]
#
user_agent: Optional[str] = None
verify: bool = True
verify: Union[bool, str] = True
timeout: Optional[Union[int, tuple]] = None
proxy: Optional[Dict[str, str]] = None
session: Optional[requests.Session] = None
Loading
Loading