taegis-sdk-python 1.4.8__tar.gz → 1.4.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taegis_sdk_python-1.4.8/taegis_sdk_python.egg-info → taegis_sdk_python-1.4.9}/PKG-INFO +1 -1
- taegis_sdk_python-1.4.9/taegis_sdk_python/_version.py +1 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/clients/types.py +63 -24
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/datasources/types.py +3 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations2/mutations.py +407 -1
- taegis_sdk_python-1.4.9/taegis_sdk_python/services/investigations2/queries.py +512 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations2/types.py +2144 -412
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/process_trees/types.py +8 -1
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants4/mutations.py +17 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants4/queries.py +34 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants4/types.py +210 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat/types.py +47 -4
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9/taegis_sdk_python.egg-info}/PKG-INFO +1 -1
- taegis_sdk_python-1.4.8/taegis_sdk_python/_version.py +0 -1
- taegis_sdk_python-1.4.8/taegis_sdk_python/services/investigations2/queries.py +0 -255
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/LICENSE +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/MANIFEST.in +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/README.md +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/requirements-dev.txt +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/requirements-test.txt +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/requirements.txt +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/setup.cfg +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/setup.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/_consts.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/authentication.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/config.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/errors.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/service_core.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/access_points/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/access_points/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/access_points/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/access_points/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/agent/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/agent/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/agent/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/agent/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts_history/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts_history/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts_history/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts_history/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/alerts_history/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets2/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets2/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets2/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/assets2/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/audits/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/audits/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/audits/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/audits/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/authz/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/authz/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/authz/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/authz/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/authz/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/byoti/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/byoti/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/byoti/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/byoti/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/byoti/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/clients/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/clients/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/clients/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/collector/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/collector/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/collector/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/collector/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/comments/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/comments/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/comments/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/comments/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/contracted_endpoint/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/contracted_endpoint/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/contracted_endpoint/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/contracted_endpoint/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/contracted_endpoint/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/cql_metadata/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/cql_metadata/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/cql_metadata/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/cql_metadata/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/cql_metadata/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/datasources/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/datasources/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/datasources/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/datasources/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/detector_registry/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/event_search/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/event_search/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/event_search/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/event_search/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/events/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/events/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/events/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/events/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/events/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/exports/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/exports/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/exports/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/exports/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/fast_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/fast_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/fast_ioc/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/fast_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/fast_ioc/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/file_info/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/file_info/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/file_info/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/file_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/file_info/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/ingest_stats/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/ingest_stats/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/ingest_stats/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/ingest_stats/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/ingest_stats/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/isensor/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/isensor/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/isensor/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/isensor/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/isensor/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_context/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_context/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_context/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_context/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_ioc/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/multi_tenant_ioc/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/nl_search/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/nl_search/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/nl_search/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/nl_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/nl_search/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notebooks/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notebooks/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notifications/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notifications/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notifications/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/notifications/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/preferences/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/preferences/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/preferences/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/preferences/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/process_trees/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/process_trees/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/process_trees/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/process_trees/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/queries/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/queries/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/queries/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/queries/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/queries/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/roadrunner/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/rules/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/rules/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/rules/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/rules/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/sharelinks/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/subjects/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/subjects/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/subjects/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/subjects/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/subjects/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenant_profiles/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenant_profiles/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenant_profiles/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenant_profiles/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenant_profiles/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants4/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/tenants4/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat_score/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat_score/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat_score/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat_score/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/threat_score/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trigger_action/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trigger_action/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trigger_action/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trigger_action/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trigger_action/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trip/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trip/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trip/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/trip/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/users/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/users/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/users/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/users/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/users/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/vdr/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/vdr/mutations.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/vdr/queries.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/vdr/subscriptions.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/vdr/types.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/tokens.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/transport/__init__.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/transport/aiohttp_websockets.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/utils.py +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python.egg-info/SOURCES.txt +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python.egg-info/dependency_links.txt +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python.egg-info/requires.txt +0 -0
- {taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v1.4.9"
|
{taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/clients/types.py
RENAMED
|
@@ -7,11 +7,34 @@
|
|
|
7
7
|
|
|
8
8
|
from dataclasses import dataclass, field
|
|
9
9
|
|
|
10
|
+
from enum import Enum
|
|
11
|
+
|
|
10
12
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
11
13
|
|
|
12
14
|
from dataclasses_json import config, dataclass_json
|
|
13
15
|
|
|
14
16
|
|
|
17
|
+
from taegis_sdk_python._consts import TaegisEnum
|
|
18
|
+
from taegis_sdk_python.utils import encode_enum, decode_enum, parse_union_result
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ClientsSearchSortBy(str, Enum):
|
|
22
|
+
"""ClientsSearchSortBy."""
|
|
23
|
+
|
|
24
|
+
NAME = "NAME"
|
|
25
|
+
CLIENT_ID = "CLIENT_ID"
|
|
26
|
+
ROLE_ASSIGNMENT_NAME = "ROLE_ASSIGNMENT_NAME"
|
|
27
|
+
TOKEN_REQUEST_COUNT = "TOKEN_REQUEST_COUNT"
|
|
28
|
+
TOKEN_REQUEST_TIME = "TOKEN_REQUEST_TIME"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class ClientsSearchSortOrder(str, Enum):
|
|
32
|
+
"""ClientsSearchSortOrder."""
|
|
33
|
+
|
|
34
|
+
ASC = "ASC"
|
|
35
|
+
DESC = "DESC"
|
|
36
|
+
|
|
37
|
+
|
|
15
38
|
@dataclass_json
|
|
16
39
|
@dataclass(order=True, eq=True, frozen=True)
|
|
17
40
|
class ClientRoleAssignment:
|
|
@@ -93,30 +116,6 @@ class ClientRoleAssignmentInput:
|
|
|
93
116
|
)
|
|
94
117
|
|
|
95
118
|
|
|
96
|
-
@dataclass_json
|
|
97
|
-
@dataclass(order=True, eq=True, frozen=True)
|
|
98
|
-
class ClientsSearchInput:
|
|
99
|
-
"""ClientsSearchInput."""
|
|
100
|
-
|
|
101
|
-
name: Optional[str] = field(default=None, metadata=config(field_name="name"))
|
|
102
|
-
client_ids: Optional[List[str]] = field(
|
|
103
|
-
default=None, metadata=config(field_name="clientIDs")
|
|
104
|
-
)
|
|
105
|
-
tenant_id: Optional[str] = field(
|
|
106
|
-
default=None, metadata=config(field_name="tenantID")
|
|
107
|
-
)
|
|
108
|
-
role_ids: Optional[List[str]] = field(
|
|
109
|
-
default=None, metadata=config(field_name="roleIDs")
|
|
110
|
-
)
|
|
111
|
-
tenant_ids: Optional[List[str]] = field(
|
|
112
|
-
default=None, metadata=config(field_name="tenantIDs")
|
|
113
|
-
)
|
|
114
|
-
page_offset: Optional[int] = field(
|
|
115
|
-
default=None, metadata=config(field_name="pageOffset")
|
|
116
|
-
)
|
|
117
|
-
per_page: Optional[int] = field(default=None, metadata=config(field_name="perPage"))
|
|
118
|
-
|
|
119
|
-
|
|
120
119
|
@dataclass_json
|
|
121
120
|
@dataclass(order=True, eq=True, frozen=True)
|
|
122
121
|
class CreateClientInput:
|
|
@@ -260,6 +259,46 @@ class Client:
|
|
|
260
259
|
)
|
|
261
260
|
|
|
262
261
|
|
|
262
|
+
@dataclass_json
|
|
263
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
264
|
+
class ClientsSearchInput:
|
|
265
|
+
"""ClientsSearchInput."""
|
|
266
|
+
|
|
267
|
+
name: Optional[str] = field(default=None, metadata=config(field_name="name"))
|
|
268
|
+
client_ids: Optional[List[str]] = field(
|
|
269
|
+
default=None, metadata=config(field_name="clientIDs")
|
|
270
|
+
)
|
|
271
|
+
tenant_id: Optional[str] = field(
|
|
272
|
+
default=None, metadata=config(field_name="tenantID")
|
|
273
|
+
)
|
|
274
|
+
role_ids: Optional[List[str]] = field(
|
|
275
|
+
default=None, metadata=config(field_name="roleIDs")
|
|
276
|
+
)
|
|
277
|
+
tenant_ids: Optional[List[str]] = field(
|
|
278
|
+
default=None, metadata=config(field_name="tenantIDs")
|
|
279
|
+
)
|
|
280
|
+
page_offset: Optional[int] = field(
|
|
281
|
+
default=None, metadata=config(field_name="pageOffset")
|
|
282
|
+
)
|
|
283
|
+
per_page: Optional[int] = field(default=None, metadata=config(field_name="perPage"))
|
|
284
|
+
sort_by: Optional[Union[ClientsSearchSortBy, TaegisEnum]] = field(
|
|
285
|
+
default=None,
|
|
286
|
+
metadata=config(
|
|
287
|
+
encoder=encode_enum,
|
|
288
|
+
decoder=lambda x: decode_enum(ClientsSearchSortBy, x),
|
|
289
|
+
field_name="sortBy",
|
|
290
|
+
),
|
|
291
|
+
)
|
|
292
|
+
sort_order: Optional[Union[ClientsSearchSortOrder, TaegisEnum]] = field(
|
|
293
|
+
default=None,
|
|
294
|
+
metadata=config(
|
|
295
|
+
encoder=encode_enum,
|
|
296
|
+
decoder=lambda x: decode_enum(ClientsSearchSortOrder, x),
|
|
297
|
+
field_name="sortOrder",
|
|
298
|
+
),
|
|
299
|
+
)
|
|
300
|
+
|
|
301
|
+
|
|
263
302
|
@dataclass_json
|
|
264
303
|
@dataclass(order=True, eq=True, frozen=True)
|
|
265
304
|
class ClientSearchResults:
|
{taegis_sdk_python-1.4.8 → taegis_sdk_python-1.4.9}/taegis_sdk_python/services/datasources/types.py
RENAMED
|
@@ -153,6 +153,9 @@ class DataSourcesWhereInput:
|
|
|
153
153
|
source_id: Optional[List[str]] = field(
|
|
154
154
|
default=None, metadata=config(field_name="sourceId")
|
|
155
155
|
)
|
|
156
|
+
source_id_search: Optional[List[str]] = field(
|
|
157
|
+
default=None, metadata=config(field_name="sourceIdSearch")
|
|
158
|
+
)
|
|
156
159
|
type: Optional[List[str]] = field(default=None, metadata=config(field_name="type"))
|
|
157
160
|
sensor_type: Optional[List[str]] = field(
|
|
158
161
|
default=None, metadata=config(field_name="sensorType")
|
|
@@ -32,6 +32,381 @@ class TaegisSDKInvestigations2Mutation:
|
|
|
32
32
|
def __init__(self, service: Investigations2Service):
|
|
33
33
|
self.service = service
|
|
34
34
|
|
|
35
|
+
def create_case(self, input_: CreateCaseInput) -> Case:
|
|
36
|
+
"""createCase creates new case with the provided arguments.."""
|
|
37
|
+
endpoint = "createCase"
|
|
38
|
+
|
|
39
|
+
result = self.service.execute_mutation(
|
|
40
|
+
endpoint=endpoint,
|
|
41
|
+
variables={
|
|
42
|
+
"input": prepare_input(input_),
|
|
43
|
+
},
|
|
44
|
+
output=build_output_string(Case),
|
|
45
|
+
)
|
|
46
|
+
if result.get(endpoint) is not None:
|
|
47
|
+
return Case.from_dict(result.get(endpoint))
|
|
48
|
+
raise GraphQLNoRowsInResultSetError("for mutation createCase")
|
|
49
|
+
|
|
50
|
+
def update_case(self, input_: UpdateCaseInput) -> Case:
|
|
51
|
+
"""updateCase updates an existing case.
|
|
52
|
+
This is a PATCH style mutation, only fields that are send in the input will be updated..
|
|
53
|
+
"""
|
|
54
|
+
endpoint = "updateCase"
|
|
55
|
+
|
|
56
|
+
result = self.service.execute_mutation(
|
|
57
|
+
endpoint=endpoint,
|
|
58
|
+
variables={
|
|
59
|
+
"input": prepare_input(input_),
|
|
60
|
+
},
|
|
61
|
+
output=build_output_string(Case),
|
|
62
|
+
)
|
|
63
|
+
if result.get(endpoint) is not None:
|
|
64
|
+
return Case.from_dict(result.get(endpoint))
|
|
65
|
+
raise GraphQLNoRowsInResultSetError("for mutation updateCase")
|
|
66
|
+
|
|
67
|
+
def add_evidence_to_case(
|
|
68
|
+
self, input_: AddEvidenceToCaseInput
|
|
69
|
+
) -> AddEvidenceToCaseResult:
|
|
70
|
+
"""addEvidenceToCase will add more evidence to an existing case.
|
|
71
|
+
Evidence added through this mutation will not be considered genesis evidence.
|
|
72
|
+
The response will include the evidence that the service will attempt to add to the case.
|
|
73
|
+
|
|
74
|
+
Adding evidence to cases is an asynchronous operation.
|
|
75
|
+
It will typically finish pretty quickly, but added alerts/events will may not show up in the returned case until the async job is fully complete.
|
|
76
|
+
The processing status, that is found on the case type will reflect the state of the processing job.
|
|
77
|
+
Once the status is set to 'SUCCESS' the background job is complete and requesting the case will return the related evidence.
|
|
78
|
+
|
|
79
|
+
Adding, removing or updating evidence (closing a case) while other jobs are processing for a given case will cause the jobs to queue.
|
|
80
|
+
Jobs will be worked through in the order they were received.."""
|
|
81
|
+
endpoint = "addEvidenceToCase"
|
|
82
|
+
|
|
83
|
+
result = self.service.execute_mutation(
|
|
84
|
+
endpoint=endpoint,
|
|
85
|
+
variables={
|
|
86
|
+
"input": prepare_input(input_),
|
|
87
|
+
},
|
|
88
|
+
output=build_output_string(AddEvidenceToCaseResult),
|
|
89
|
+
)
|
|
90
|
+
if result.get(endpoint) is not None:
|
|
91
|
+
return AddEvidenceToCaseResult.from_dict(result.get(endpoint))
|
|
92
|
+
raise GraphQLNoRowsInResultSetError("for mutation addEvidenceToCase")
|
|
93
|
+
|
|
94
|
+
def remove_evidence_from_case(
|
|
95
|
+
self, input_: RemoveEvidenceFromCaseInput
|
|
96
|
+
) -> RemoveEvidenceFromCaseResult:
|
|
97
|
+
"""removeEvidenceFromCase will remove evidence from an existing case.
|
|
98
|
+
The response will include the evidence that the service will attempt to remove from the case.
|
|
99
|
+
|
|
100
|
+
Removing evidence from cases is an asynchronous operation.
|
|
101
|
+
It will typically finish pretty quickly, but removed alerts/events will can remain attached to the case until the async job is fully complete.
|
|
102
|
+
The processing status, that is found on the case type will reflect the state of the processing job.
|
|
103
|
+
Once the status is set to 'SUCCESS' the background job is complete and requesting the case will only return evidence that was not removed.
|
|
104
|
+
|
|
105
|
+
Adding, removing or updating evidence (closing a case) while other jobs are processing for a given case will cause the jobs to queue.
|
|
106
|
+
Jobs will be worked through in the order they were received.."""
|
|
107
|
+
endpoint = "removeEvidenceFromCase"
|
|
108
|
+
|
|
109
|
+
result = self.service.execute_mutation(
|
|
110
|
+
endpoint=endpoint,
|
|
111
|
+
variables={
|
|
112
|
+
"input": prepare_input(input_),
|
|
113
|
+
},
|
|
114
|
+
output=build_output_string(RemoveEvidenceFromCaseResult),
|
|
115
|
+
)
|
|
116
|
+
if result.get(endpoint) is not None:
|
|
117
|
+
return RemoveEvidenceFromCaseResult.from_dict(result.get(endpoint))
|
|
118
|
+
raise GraphQLNoRowsInResultSetError("for mutation removeEvidenceFromCase")
|
|
119
|
+
|
|
120
|
+
def close_case(self, input_: CloseCaseInput) -> Case:
|
|
121
|
+
"""closeCase will close an existing case.
|
|
122
|
+
If the case has alerts attached to it, the alertsResolutionStatus field is required and alerts will be resolved based on the provided status.
|
|
123
|
+
Once a case is closed, it can no longer be edited or have evidence added to it while in the closed state, it can only be archived.
|
|
124
|
+
A closed case can be reopened if changes are needed after closing.
|
|
125
|
+
|
|
126
|
+
Resolving evidence in a case is an asynchronous operation.
|
|
127
|
+
It will typically finish pretty quickly, but resolving alerts will may not reflect the updated status until the async job is fully complete.
|
|
128
|
+
The processing status, that is found on the case type will reflect the state of the processing job.
|
|
129
|
+
Once the status is set to 'SUCCESS' the background job is complete and the alerts will have been updated.
|
|
130
|
+
|
|
131
|
+
Adding, removing or updating evidence (closing a case) while other jobs are processing for a given case will cause the jobs to queue.
|
|
132
|
+
Jobs will be worked through in the order they were received.."""
|
|
133
|
+
endpoint = "closeCase"
|
|
134
|
+
|
|
135
|
+
result = self.service.execute_mutation(
|
|
136
|
+
endpoint=endpoint,
|
|
137
|
+
variables={
|
|
138
|
+
"input": prepare_input(input_),
|
|
139
|
+
},
|
|
140
|
+
output=build_output_string(Case),
|
|
141
|
+
)
|
|
142
|
+
if result.get(endpoint) is not None:
|
|
143
|
+
return Case.from_dict(result.get(endpoint))
|
|
144
|
+
raise GraphQLNoRowsInResultSetError("for mutation closeCase")
|
|
145
|
+
|
|
146
|
+
def create_case_rule(self, input_: CreateCaseRuleInput) -> CaseRule:
|
|
147
|
+
"""createCaseRule accepts input to create a new auto-case rule.."""
|
|
148
|
+
endpoint = "createCaseRule"
|
|
149
|
+
|
|
150
|
+
result = self.service.execute_mutation(
|
|
151
|
+
endpoint=endpoint,
|
|
152
|
+
variables={
|
|
153
|
+
"input": prepare_input(input_),
|
|
154
|
+
},
|
|
155
|
+
output=build_output_string(CaseRule),
|
|
156
|
+
)
|
|
157
|
+
if result.get(endpoint) is not None:
|
|
158
|
+
return CaseRule.from_dict(result.get(endpoint))
|
|
159
|
+
raise GraphQLNoRowsInResultSetError("for mutation createCaseRule")
|
|
160
|
+
|
|
161
|
+
def update_case_rule(self, input_: UpdateCaseRuleInput) -> CaseRule:
|
|
162
|
+
"""updateCaseRule accepts input to update an existing auto-case rule.."""
|
|
163
|
+
endpoint = "updateCaseRule"
|
|
164
|
+
|
|
165
|
+
result = self.service.execute_mutation(
|
|
166
|
+
endpoint=endpoint,
|
|
167
|
+
variables={
|
|
168
|
+
"input": prepare_input(input_),
|
|
169
|
+
},
|
|
170
|
+
output=build_output_string(CaseRule),
|
|
171
|
+
)
|
|
172
|
+
if result.get(endpoint) is not None:
|
|
173
|
+
return CaseRule.from_dict(result.get(endpoint))
|
|
174
|
+
raise GraphQLNoRowsInResultSetError("for mutation updateCaseRule")
|
|
175
|
+
|
|
176
|
+
def delete_case_rule(self, input_: DeleteCaseRuleInput) -> CaseRule:
|
|
177
|
+
"""deleteCaseRule removes an existing case rule.
|
|
178
|
+
This is a hard delete. Data will not be recoverable.."""
|
|
179
|
+
endpoint = "deleteCaseRule"
|
|
180
|
+
|
|
181
|
+
result = self.service.execute_mutation(
|
|
182
|
+
endpoint=endpoint,
|
|
183
|
+
variables={
|
|
184
|
+
"input": prepare_input(input_),
|
|
185
|
+
},
|
|
186
|
+
output=build_output_string(CaseRule),
|
|
187
|
+
)
|
|
188
|
+
if result.get(endpoint) is not None:
|
|
189
|
+
return CaseRule.from_dict(result.get(endpoint))
|
|
190
|
+
raise GraphQLNoRowsInResultSetError("for mutation deleteCaseRule")
|
|
191
|
+
|
|
192
|
+
def create_case_template(self, input_: CreateCaseTemplateInput) -> CaseTemplate:
|
|
193
|
+
"""createCaseTemplate accepts input to create a new auto-case template.."""
|
|
194
|
+
endpoint = "createCaseTemplate"
|
|
195
|
+
|
|
196
|
+
result = self.service.execute_mutation(
|
|
197
|
+
endpoint=endpoint,
|
|
198
|
+
variables={
|
|
199
|
+
"input": prepare_input(input_),
|
|
200
|
+
},
|
|
201
|
+
output=build_output_string(CaseTemplate),
|
|
202
|
+
)
|
|
203
|
+
if result.get(endpoint) is not None:
|
|
204
|
+
return CaseTemplate.from_dict(result.get(endpoint))
|
|
205
|
+
raise GraphQLNoRowsInResultSetError("for mutation createCaseTemplate")
|
|
206
|
+
|
|
207
|
+
def update_case_template(self, input_: UpdateCaseTemplateInput) -> CaseTemplate:
|
|
208
|
+
"""updateCaseTemplate accepts input to update an existing auto-case template.."""
|
|
209
|
+
endpoint = "updateCaseTemplate"
|
|
210
|
+
|
|
211
|
+
result = self.service.execute_mutation(
|
|
212
|
+
endpoint=endpoint,
|
|
213
|
+
variables={
|
|
214
|
+
"input": prepare_input(input_),
|
|
215
|
+
},
|
|
216
|
+
output=build_output_string(CaseTemplate),
|
|
217
|
+
)
|
|
218
|
+
if result.get(endpoint) is not None:
|
|
219
|
+
return CaseTemplate.from_dict(result.get(endpoint))
|
|
220
|
+
raise GraphQLNoRowsInResultSetError("for mutation updateCaseTemplate")
|
|
221
|
+
|
|
222
|
+
def delete_case_template(self, input_: DeleteCaseTemplateInput) -> CaseTemplate:
|
|
223
|
+
"""deleteCaseTemplate removes an existing case template.
|
|
224
|
+
This is a hard delete. Data will not be recoverable.."""
|
|
225
|
+
endpoint = "deleteCaseTemplate"
|
|
226
|
+
|
|
227
|
+
result = self.service.execute_mutation(
|
|
228
|
+
endpoint=endpoint,
|
|
229
|
+
variables={
|
|
230
|
+
"input": prepare_input(input_),
|
|
231
|
+
},
|
|
232
|
+
output=build_output_string(CaseTemplate),
|
|
233
|
+
)
|
|
234
|
+
if result.get(endpoint) is not None:
|
|
235
|
+
return CaseTemplate.from_dict(result.get(endpoint))
|
|
236
|
+
raise GraphQLNoRowsInResultSetError("for mutation deleteCaseTemplate")
|
|
237
|
+
|
|
238
|
+
def import_case_resources(
|
|
239
|
+
self, input_: ImportCaseResourcesInput
|
|
240
|
+
) -> List[CaseResource]:
|
|
241
|
+
"""importCaseResources will import case resources (rules & templates) from a YAML file.
|
|
242
|
+
The input YAML structure can be retrieved from a YAML string exported from the exportCaseResources query..
|
|
243
|
+
"""
|
|
244
|
+
endpoint = "importCaseResources"
|
|
245
|
+
|
|
246
|
+
result = self.service.execute_mutation(
|
|
247
|
+
endpoint=endpoint,
|
|
248
|
+
variables={
|
|
249
|
+
"input": prepare_input(input_),
|
|
250
|
+
},
|
|
251
|
+
output=build_output_string(CaseResource),
|
|
252
|
+
)
|
|
253
|
+
if result.get(endpoint) is not None:
|
|
254
|
+
return [parse_union_result(CaseResource, r) for r in result.get(endpoint)]
|
|
255
|
+
raise GraphQLNoRowsInResultSetError("for mutation importCaseResources")
|
|
256
|
+
|
|
257
|
+
def add_case_comment(self, input_: AddCaseComment) -> CaseComment:
|
|
258
|
+
"""addCaseComment adds a comment to an existing case.."""
|
|
259
|
+
endpoint = "addCaseComment"
|
|
260
|
+
|
|
261
|
+
result = self.service.execute_mutation(
|
|
262
|
+
endpoint=endpoint,
|
|
263
|
+
variables={
|
|
264
|
+
"input": prepare_input(input_),
|
|
265
|
+
},
|
|
266
|
+
output=build_output_string(CaseComment),
|
|
267
|
+
)
|
|
268
|
+
if result.get(endpoint) is not None:
|
|
269
|
+
return CaseComment.from_dict(result.get(endpoint))
|
|
270
|
+
raise GraphQLNoRowsInResultSetError("for mutation addCaseComment")
|
|
271
|
+
|
|
272
|
+
def update_case_comment(self, input_: UpdateCaseCommentInput) -> CaseComment:
|
|
273
|
+
"""updateCaseComment updates an existing comment on a case.
|
|
274
|
+
This is a PATCH style mutation, only fields that are send in the input will be updated.
|
|
275
|
+
Only the user who created the comment can update it.
|
|
276
|
+
Updating a comment and adding new @mentions will trigger new notifications but will not send notifications to @mentions that are already present in the comment..
|
|
277
|
+
"""
|
|
278
|
+
endpoint = "updateCaseComment"
|
|
279
|
+
|
|
280
|
+
result = self.service.execute_mutation(
|
|
281
|
+
endpoint=endpoint,
|
|
282
|
+
variables={
|
|
283
|
+
"input": prepare_input(input_),
|
|
284
|
+
},
|
|
285
|
+
output=build_output_string(CaseComment),
|
|
286
|
+
)
|
|
287
|
+
if result.get(endpoint) is not None:
|
|
288
|
+
return CaseComment.from_dict(result.get(endpoint))
|
|
289
|
+
raise GraphQLNoRowsInResultSetError("for mutation updateCaseComment")
|
|
290
|
+
|
|
291
|
+
def delete_case_comment(self, input_: DeleteCaseCommentInput) -> CaseComment:
|
|
292
|
+
"""deleteCaseComment removes an existing comment from a case.
|
|
293
|
+
This is a hard delete. Data will not be recoverable.."""
|
|
294
|
+
endpoint = "deleteCaseComment"
|
|
295
|
+
|
|
296
|
+
result = self.service.execute_mutation(
|
|
297
|
+
endpoint=endpoint,
|
|
298
|
+
variables={
|
|
299
|
+
"input": prepare_input(input_),
|
|
300
|
+
},
|
|
301
|
+
output=build_output_string(CaseComment),
|
|
302
|
+
)
|
|
303
|
+
if result.get(endpoint) is not None:
|
|
304
|
+
return CaseComment.from_dict(result.get(endpoint))
|
|
305
|
+
raise GraphQLNoRowsInResultSetError("for mutation deleteCaseComment")
|
|
306
|
+
|
|
307
|
+
def archive_case(self, input_: ArchiveCaseInput) -> Case:
|
|
308
|
+
"""archiveCase archives an existing case.
|
|
309
|
+
Only cases that are closed can be archived.
|
|
310
|
+
There may be some cases that are archived but not in closed states, these are legacy cases that were archived before the closed requirement was introduced..
|
|
311
|
+
"""
|
|
312
|
+
endpoint = "archiveCase"
|
|
313
|
+
|
|
314
|
+
result = self.service.execute_mutation(
|
|
315
|
+
endpoint=endpoint,
|
|
316
|
+
variables={
|
|
317
|
+
"input": prepare_input(input_),
|
|
318
|
+
},
|
|
319
|
+
output=build_output_string(Case),
|
|
320
|
+
)
|
|
321
|
+
if result.get(endpoint) is not None:
|
|
322
|
+
return Case.from_dict(result.get(endpoint))
|
|
323
|
+
raise GraphQLNoRowsInResultSetError("for mutation archiveCase")
|
|
324
|
+
|
|
325
|
+
def unarchive_case(self, input_: UnarchiveCaseInput) -> Case:
|
|
326
|
+
"""unarchiveCase unarchives an archived case.."""
|
|
327
|
+
endpoint = "unarchiveCase"
|
|
328
|
+
|
|
329
|
+
result = self.service.execute_mutation(
|
|
330
|
+
endpoint=endpoint,
|
|
331
|
+
variables={
|
|
332
|
+
"input": prepare_input(input_),
|
|
333
|
+
},
|
|
334
|
+
output=build_output_string(Case),
|
|
335
|
+
)
|
|
336
|
+
if result.get(endpoint) is not None:
|
|
337
|
+
return Case.from_dict(result.get(endpoint))
|
|
338
|
+
raise GraphQLNoRowsInResultSetError("for mutation unarchiveCase")
|
|
339
|
+
|
|
340
|
+
def archive_cases(self, input_: ArchiveCasesInput) -> ArchivedCases:
|
|
341
|
+
"""archiveCases archives a set of existing cases.
|
|
342
|
+
Only cases that are closed can be archived.
|
|
343
|
+
The response will include the ids of the cases that were successfully archived and will not return errors for cases that could not be archived..
|
|
344
|
+
"""
|
|
345
|
+
endpoint = "archiveCases"
|
|
346
|
+
|
|
347
|
+
result = self.service.execute_mutation(
|
|
348
|
+
endpoint=endpoint,
|
|
349
|
+
variables={
|
|
350
|
+
"input": prepare_input(input_),
|
|
351
|
+
},
|
|
352
|
+
output=build_output_string(ArchivedCases),
|
|
353
|
+
)
|
|
354
|
+
if result.get(endpoint) is not None:
|
|
355
|
+
return ArchivedCases.from_dict(result.get(endpoint))
|
|
356
|
+
raise GraphQLNoRowsInResultSetError("for mutation archiveCases")
|
|
357
|
+
|
|
358
|
+
def unarchive_cases(self, input_: UnarchiveCasesInput) -> UnarchivedCases:
|
|
359
|
+
"""unarchiveCases unarchives a set of archived cases.
|
|
360
|
+
The response will include the ids of the cases that were successfully unarchived and will not return errors for cases that could not be unarchived..
|
|
361
|
+
"""
|
|
362
|
+
endpoint = "unarchiveCases"
|
|
363
|
+
|
|
364
|
+
result = self.service.execute_mutation(
|
|
365
|
+
endpoint=endpoint,
|
|
366
|
+
variables={
|
|
367
|
+
"input": prepare_input(input_),
|
|
368
|
+
},
|
|
369
|
+
output=build_output_string(UnarchivedCases),
|
|
370
|
+
)
|
|
371
|
+
if result.get(endpoint) is not None:
|
|
372
|
+
return UnarchivedCases.from_dict(result.get(endpoint))
|
|
373
|
+
raise GraphQLNoRowsInResultSetError("for mutation unarchiveCases")
|
|
374
|
+
|
|
375
|
+
def start_case_file_upload(
|
|
376
|
+
self, input_: StartCaseFileUploadInput
|
|
377
|
+
) -> CaseFileUpload:
|
|
378
|
+
"""startCaseFileUpload initializes a file upload for a case.
|
|
379
|
+
The response will include a pre-signed URL that can be used to upload a file to the case..
|
|
380
|
+
"""
|
|
381
|
+
endpoint = "startCaseFileUpload"
|
|
382
|
+
|
|
383
|
+
result = self.service.execute_mutation(
|
|
384
|
+
endpoint=endpoint,
|
|
385
|
+
variables={
|
|
386
|
+
"input": prepare_input(input_),
|
|
387
|
+
},
|
|
388
|
+
output=build_output_string(CaseFileUpload),
|
|
389
|
+
)
|
|
390
|
+
if result.get(endpoint) is not None:
|
|
391
|
+
return CaseFileUpload.from_dict(result.get(endpoint))
|
|
392
|
+
raise GraphQLNoRowsInResultSetError("for mutation startCaseFileUpload")
|
|
393
|
+
|
|
394
|
+
def delete_case_file(self, input_: DeleteCaseFileInput) -> CaseFile:
|
|
395
|
+
"""deleteCaseFile removes an existing file from a case.
|
|
396
|
+
This is a hard delete. Data will not be recoverable.."""
|
|
397
|
+
endpoint = "deleteCaseFile"
|
|
398
|
+
|
|
399
|
+
result = self.service.execute_mutation(
|
|
400
|
+
endpoint=endpoint,
|
|
401
|
+
variables={
|
|
402
|
+
"input": prepare_input(input_),
|
|
403
|
+
},
|
|
404
|
+
output=build_output_string(CaseFile),
|
|
405
|
+
)
|
|
406
|
+
if result.get(endpoint) is not None:
|
|
407
|
+
return CaseFile.from_dict(result.get(endpoint))
|
|
408
|
+
raise GraphQLNoRowsInResultSetError("for mutation deleteCaseFile")
|
|
409
|
+
|
|
35
410
|
def create_investigation_v2(
|
|
36
411
|
self, input_: CreateInvestigationInput
|
|
37
412
|
) -> InvestigationV2:
|
|
@@ -149,6 +524,37 @@ class TaegisSDKInvestigations2Mutation:
|
|
|
149
524
|
return InvestigationV2.from_dict(result.get(endpoint))
|
|
150
525
|
raise GraphQLNoRowsInResultSetError("for mutation closeInvestigation")
|
|
151
526
|
|
|
527
|
+
def bulk_set_investigation_status(
|
|
528
|
+
self, input_: BulkSetInvestigationStatusInput
|
|
529
|
+
) -> BulkSetInvestigationStatusResult:
|
|
530
|
+
"""bulkSetInvestigationStatus will change the status of a set of investigations.
|
|
531
|
+
|
|
532
|
+
The response will include the ids of the investigations that were successfully updated and errors for investigations that could not be updated.
|
|
533
|
+
(partial success is possible and clients will need to appropriately handle the errors returned for investigations that could not be updated)
|
|
534
|
+
Investigations that are already in the requested status will not be updated and will not return an error.
|
|
535
|
+
|
|
536
|
+
If the status is a close status, the alertsResolutionStatus and reason fields are required otherwise they must not be sent.
|
|
537
|
+
Closing the investigations will resolve the alerts based on the provided status. While the closing of the investigation is a synchronous operation, the alerts may not be updated immediately as that is asynchronous.
|
|
538
|
+
|
|
539
|
+
Metrics will be produced for the investigations that were successfully updated as would be the case for a single investigation close or status transition.
|
|
540
|
+
|
|
541
|
+
Statuses such as AWAITING_ACTION and DRAFT may not be used when setting the status of investigations in bulk.
|
|
542
|
+
|
|
543
|
+
Investigations currently in the DRAFT state may be bulk updated to a non-DRAFT state, but investigations that are not in the DRAFT state may not be bulk updated to the DRAFT state..
|
|
544
|
+
"""
|
|
545
|
+
endpoint = "bulkSetInvestigationStatus"
|
|
546
|
+
|
|
547
|
+
result = self.service.execute_mutation(
|
|
548
|
+
endpoint=endpoint,
|
|
549
|
+
variables={
|
|
550
|
+
"input": prepare_input(input_),
|
|
551
|
+
},
|
|
552
|
+
output=build_output_string(BulkSetInvestigationStatusResult),
|
|
553
|
+
)
|
|
554
|
+
if result.get(endpoint) is not None:
|
|
555
|
+
return BulkSetInvestigationStatusResult.from_dict(result.get(endpoint))
|
|
556
|
+
raise GraphQLNoRowsInResultSetError("for mutation bulkSetInvestigationStatus")
|
|
557
|
+
|
|
152
558
|
def create_investigation_rule(
|
|
153
559
|
self, input_: CreateInvestigationRuleInput
|
|
154
560
|
) -> InvestigationRule:
|
|
@@ -336,7 +742,7 @@ class TaegisSDKInvestigations2Mutation:
|
|
|
336
742
|
) -> InvestigationV2:
|
|
337
743
|
"""archiveInvestigationV2 archives an existing investigation.
|
|
338
744
|
Only investigations that are closed can be archived.
|
|
339
|
-
There may be some investigations that are archived but not in closed states, these are legacy investigations that were archived before the
|
|
745
|
+
There may be some investigations that are archived but not in closed states, these are legacy investigations that were archived before the closed requirement was introduced..
|
|
340
746
|
"""
|
|
341
747
|
endpoint = "archiveInvestigationV2"
|
|
342
748
|
|