taegis-sdk-python 1.6.3__tar.gz → 1.6.4__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.6.3 → taegis_sdk_python-1.6.4}/PKG-INFO +1 -1
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/_version.py +1 -1
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets2/queries.py +69 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets2/types.py +17 -0
- taegis_sdk_python-1.6.4/taegis_sdk_python/services/datasources/mutations.py +117 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/datasources/queries.py +28 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/datasources/types.py +61 -22
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/entity_context/queries.py +24 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/entity_context/types.py +39 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat/queries.py +53 -5
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat/types.py +61 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/users/mutations.py +18 -1
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/users/types.py +4 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/xdr_central_connector/mutations.py +34 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/xdr_central_connector/queries.py +13 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/xdr_central_connector/types.py +109 -0
- taegis_sdk_python-1.6.3/taegis_sdk_python/services/datasources/mutations.py +0 -54
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/.gitignore +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/LICENSE +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/README.md +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/pyproject.toml +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/_consts.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/authentication.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/alerts/federated_search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/alerts/search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/cases/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/cases/federated_search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/cases/search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/events/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/events/search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/investigations/federated_search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/investigations/search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/sharelinks/create.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/commons/sharelinks/unfurl.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/config.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/errors.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/middlewares/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/middlewares/logging/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/middlewares/logging/_default.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/middlewares/retry/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/middlewares/retry/_default.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/middlewares/utils.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/service_core.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/access_points/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/access_points/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/access_points/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/access_points/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/agent/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/agent/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/agent/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/agent/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts/types.py +738 -738
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts_history/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts_history/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts_history/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts_history/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/alerts_history/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets2/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets2/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/audits/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/audits/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/audits/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/audits/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/authz/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/authz/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/authz/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/authz/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/authz/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/byoti/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/byoti/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/byoti/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/byoti/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/byoti/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/clients/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/clients/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/clients/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/clients/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/collector/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/collector/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/collector/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/collector/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/comments/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/comments/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/comments/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/comments/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/contracted_endpoint/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/contracted_endpoint/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/contracted_endpoint/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/contracted_endpoint/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/contracted_endpoint/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/cql_metadata/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/cql_metadata/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/cql_metadata/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/cql_metadata/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/cql_metadata/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/datasources/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/datasources/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/detector_registry/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/entity_context/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/entity_context/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/entity_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/event_search/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/event_search/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/event_search/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/event_search/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/events/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/events/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/events/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/events/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/events/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/exports/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/exports/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/exports/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/exports/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/fast_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/fast_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/fast_ioc/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/fast_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/fast_ioc/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/file_info/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/file_info/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/file_info/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/file_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/file_info/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/ingest_stats/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/ingest_stats/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/ingest_stats/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/ingest_stats/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/ingest_stats/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations2/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations2/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/investigations2/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/isensor/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/isensor/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/isensor/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/isensor/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/isensor/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_context/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_context/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_context/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_context/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_ioc/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/multi_tenant_ioc/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/nl_search/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/nl_search/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/nl_search/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/nl_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/nl_search/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notebooks/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notebooks/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notifications/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notifications/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notifications/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/notifications/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/preferences/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/preferences/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/preferences/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/preferences/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/process_trees/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/process_trees/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/process_trees/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/process_trees/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/process_trees/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/queries/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/queries/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/queries/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/queries/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/queries/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/roadrunner/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/rules/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/rules/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/rules/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/rules/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/sharelinks/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/subjects/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/subjects/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/subjects/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/subjects/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/subjects/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenant_profiles/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenant_profiles/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenant_profiles/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenant_profiles/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenant_profiles/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants4/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants4/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants4/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants4/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/tenants4/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat_score/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat_score/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat_score/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat_score/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat_score/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trigger_action/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trigger_action/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trigger_action/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trigger_action/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trigger_action/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trip/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trip/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trip/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/trip/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/users/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/users/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/users/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/vdr/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/vdr/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/vdr/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/vdr/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/vdr/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/xdr_central_connector/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/xdr_central_connector/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/templates/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/templates/_jinja2.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/tokens.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: taegis-sdk-python
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.4
|
|
4
4
|
Summary: Taegis Python SDK
|
|
5
5
|
Project-URL: Homepage, https://github.com/secureworks/taegis-sdk-python
|
|
6
6
|
Project-URL: Bug Reports, https://github.com/secureworks/taegis-sdk-python/issues
|
{taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets2/queries.py
RENAMED
|
@@ -420,3 +420,72 @@ class TaegisSDKAssets2Query:
|
|
|
420
420
|
if result.get(endpoint) is not None:
|
|
421
421
|
return AssetsMacAddress.from_dict(result.get(endpoint))
|
|
422
422
|
raise GraphQLNoRowsInResultSetError("for query assetsMacAddress")
|
|
423
|
+
|
|
424
|
+
def network_info_by_host_id(self, host_id: str) -> List[NetworkInfo]:
|
|
425
|
+
""" "Retrieve network information for a host based on a provided host_id."""
|
|
426
|
+
endpoint = "networkInfoByHostID"
|
|
427
|
+
|
|
428
|
+
result = self.service.execute_query(
|
|
429
|
+
endpoint=endpoint,
|
|
430
|
+
variables={
|
|
431
|
+
"hostId": prepare_input(host_id),
|
|
432
|
+
},
|
|
433
|
+
output=build_output_string(NetworkInfo),
|
|
434
|
+
)
|
|
435
|
+
if result.get(endpoint) is not None:
|
|
436
|
+
return NetworkInfo.schema().load(
|
|
437
|
+
[r or {} for r in result.get(endpoint)], many=True
|
|
438
|
+
)
|
|
439
|
+
raise GraphQLNoRowsInResultSetError("for query networkInfoByHostID")
|
|
440
|
+
|
|
441
|
+
def network_info_by_hostname(
|
|
442
|
+
self,
|
|
443
|
+
event_time: str,
|
|
444
|
+
host_name: str,
|
|
445
|
+
exact_match_count: int,
|
|
446
|
+
endpoint_types: Union[EndpointTypeV2, TaegisEnum],
|
|
447
|
+
) -> List[NetworkInfo]:
|
|
448
|
+
""" "Retrieve network information for a host based on a provided hostname."""
|
|
449
|
+
endpoint = "networkInfoByHostname"
|
|
450
|
+
|
|
451
|
+
result = self.service.execute_query(
|
|
452
|
+
endpoint=endpoint,
|
|
453
|
+
variables={
|
|
454
|
+
"eventTime": prepare_input(event_time),
|
|
455
|
+
"hostName": prepare_input(host_name),
|
|
456
|
+
"exactMatchCount": prepare_input(exact_match_count),
|
|
457
|
+
"endpointTypes": prepare_input(endpoint_types),
|
|
458
|
+
},
|
|
459
|
+
output=build_output_string(NetworkInfo),
|
|
460
|
+
)
|
|
461
|
+
if result.get(endpoint) is not None:
|
|
462
|
+
return NetworkInfo.schema().load(
|
|
463
|
+
[r or {} for r in result.get(endpoint)], many=True
|
|
464
|
+
)
|
|
465
|
+
raise GraphQLNoRowsInResultSetError("for query networkInfoByHostname")
|
|
466
|
+
|
|
467
|
+
def network_info_by_ip_address(
|
|
468
|
+
self,
|
|
469
|
+
event_time: str,
|
|
470
|
+
ip_address: str,
|
|
471
|
+
exact_match_count: int,
|
|
472
|
+
endpoint_types: Union[EndpointTypeV2, TaegisEnum],
|
|
473
|
+
) -> List[NetworkInfo]:
|
|
474
|
+
""" "Retrieve network information for a host based on a provided ip address."""
|
|
475
|
+
endpoint = "networkInfoByIpAddress"
|
|
476
|
+
|
|
477
|
+
result = self.service.execute_query(
|
|
478
|
+
endpoint=endpoint,
|
|
479
|
+
variables={
|
|
480
|
+
"eventTime": prepare_input(event_time),
|
|
481
|
+
"ipAddress": prepare_input(ip_address),
|
|
482
|
+
"exactMatchCount": prepare_input(exact_match_count),
|
|
483
|
+
"endpointTypes": prepare_input(endpoint_types),
|
|
484
|
+
},
|
|
485
|
+
output=build_output_string(NetworkInfo),
|
|
486
|
+
)
|
|
487
|
+
if result.get(endpoint) is not None:
|
|
488
|
+
return NetworkInfo.schema().load(
|
|
489
|
+
[r or {} for r in result.get(endpoint)], many=True
|
|
490
|
+
)
|
|
491
|
+
raise GraphQLNoRowsInResultSetError("for query networkInfoByIpAddress")
|
{taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/assets2/types.py
RENAMED
|
@@ -481,6 +481,23 @@ class PageInfoV2:
|
|
|
481
481
|
)
|
|
482
482
|
|
|
483
483
|
|
|
484
|
+
@dataclass_json
|
|
485
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
486
|
+
class NetworkInfo:
|
|
487
|
+
"""NetworkInfo."""
|
|
488
|
+
|
|
489
|
+
host_id: Optional[str] = field(default=None, metadata=config(field_name="hostId"))
|
|
490
|
+
host_name: Optional[str] = field(
|
|
491
|
+
default=None, metadata=config(field_name="hostName")
|
|
492
|
+
)
|
|
493
|
+
ip_addresses: Optional[List[str]] = field(
|
|
494
|
+
default=None, metadata=config(field_name="ipAddresses")
|
|
495
|
+
)
|
|
496
|
+
ethernet_addresses: Optional[List[str]] = field(
|
|
497
|
+
default=None, metadata=config(field_name="ethernetAddresses")
|
|
498
|
+
)
|
|
499
|
+
|
|
500
|
+
|
|
484
501
|
@dataclass_json
|
|
485
502
|
@dataclass(order=True, eq=True, frozen=True)
|
|
486
503
|
class AssetHostname:
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"""Datasources Mutation."""
|
|
2
|
+
|
|
3
|
+
# pylint: disable=no-member, unused-argument, too-many-locals, duplicate-code, wildcard-import, unused-wildcard-import, cyclic-import
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Autogenerated
|
|
7
|
+
# DO NOT MODIFY
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import logging
|
|
12
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
|
|
13
|
+
|
|
14
|
+
from taegis_sdk_python import GraphQLNoRowsInResultSetError
|
|
15
|
+
from taegis_sdk_python._consts import TaegisEnum
|
|
16
|
+
from taegis_sdk_python.services.datasources.types import *
|
|
17
|
+
from taegis_sdk_python.utils import (
|
|
18
|
+
build_output_string,
|
|
19
|
+
parse_union_result,
|
|
20
|
+
prepare_input,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
24
|
+
from taegis_sdk_python.services.datasources import DatasourcesService
|
|
25
|
+
|
|
26
|
+
log = logging.getLogger(__name__)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class TaegisSDKDatasourcesMutation:
|
|
30
|
+
"""Taegis Datasources Mutation operations."""
|
|
31
|
+
|
|
32
|
+
def __init__(self, service: DatasourcesService):
|
|
33
|
+
self.service = service
|
|
34
|
+
|
|
35
|
+
def delete_data_source_assets(
|
|
36
|
+
self, delete_asset_input: List[DeleteAssetInput]
|
|
37
|
+
) -> List[DeletedAsset]:
|
|
38
|
+
"""Executes a delete operation on all included data sources for a specified tenant. Returns an array of
|
|
39
|
+
deleted assets with metadata. Authorization permission is required with delete access to the collector
|
|
40
|
+
object.."""
|
|
41
|
+
endpoint = "deleteDataSourceAssets"
|
|
42
|
+
|
|
43
|
+
result = self.service.execute_mutation(
|
|
44
|
+
endpoint=endpoint,
|
|
45
|
+
variables={
|
|
46
|
+
"deleteAssetInput": prepare_input(delete_asset_input),
|
|
47
|
+
},
|
|
48
|
+
output=build_output_string(DeletedAsset),
|
|
49
|
+
)
|
|
50
|
+
if result.get(endpoint) is not None:
|
|
51
|
+
return DeletedAsset.schema().load(
|
|
52
|
+
[r or {} for r in result.get(endpoint)], many=True
|
|
53
|
+
)
|
|
54
|
+
raise GraphQLNoRowsInResultSetError("for mutation deleteDataSourceAssets")
|
|
55
|
+
|
|
56
|
+
def delete_data_source_tag(self, tag_id: str) -> bool:
|
|
57
|
+
"""Deleted a tag by its ID. Returns true if the tag was successfully deleted.."""
|
|
58
|
+
endpoint = "deleteDataSourceTag"
|
|
59
|
+
|
|
60
|
+
result = self.service.execute_mutation(
|
|
61
|
+
endpoint=endpoint,
|
|
62
|
+
variables={
|
|
63
|
+
"tagId": prepare_input(tag_id),
|
|
64
|
+
},
|
|
65
|
+
output="",
|
|
66
|
+
)
|
|
67
|
+
if result.get(endpoint) is not None:
|
|
68
|
+
return result.get(endpoint)
|
|
69
|
+
raise GraphQLNoRowsInResultSetError("for mutation deleteDataSourceTag")
|
|
70
|
+
|
|
71
|
+
def detach_data_source_tag(self, input_: DataSourceTagOperationInput) -> List[str]:
|
|
72
|
+
"""Detaches an existing tag from datasource(s). Returns the assetIDs that were detached from the tag.."""
|
|
73
|
+
endpoint = "detachDataSourceTag"
|
|
74
|
+
|
|
75
|
+
result = self.service.execute_mutation(
|
|
76
|
+
endpoint=endpoint,
|
|
77
|
+
variables={
|
|
78
|
+
"input": prepare_input(input_),
|
|
79
|
+
},
|
|
80
|
+
output="",
|
|
81
|
+
)
|
|
82
|
+
if result.get(endpoint) is not None:
|
|
83
|
+
return result.get(endpoint)
|
|
84
|
+
raise GraphQLNoRowsInResultSetError("for mutation detachDataSourceTag")
|
|
85
|
+
|
|
86
|
+
def create_data_source_tag(self, input_: CreateDataSourceTagInput) -> DataSourceTag:
|
|
87
|
+
"""Creates a new tag and associates it with existing datasource(s). Returns the created tag. This API
|
|
88
|
+
allows a maximum of 100 tags to be created for a given tenant.."""
|
|
89
|
+
endpoint = "createDataSourceTag"
|
|
90
|
+
|
|
91
|
+
result = self.service.execute_mutation(
|
|
92
|
+
endpoint=endpoint,
|
|
93
|
+
variables={
|
|
94
|
+
"input": prepare_input(input_),
|
|
95
|
+
},
|
|
96
|
+
output=build_output_string(DataSourceTag),
|
|
97
|
+
)
|
|
98
|
+
if result.get(endpoint) is not None:
|
|
99
|
+
return DataSourceTag.from_dict(result.get(endpoint))
|
|
100
|
+
raise GraphQLNoRowsInResultSetError("for mutation createDataSourceTag")
|
|
101
|
+
|
|
102
|
+
def attach_data_source_tag(self, input_: DataSourceTagOperationInput) -> List[str]:
|
|
103
|
+
"""Attaches or associates an existing tag to datasource(s). Returns the assetIDs attached to the tag.
|
|
104
|
+
A maximum of 100 assetIDs can be associated in a single operation. A single asset can have up to 16 tags attached to it..
|
|
105
|
+
"""
|
|
106
|
+
endpoint = "attachDataSourceTag"
|
|
107
|
+
|
|
108
|
+
result = self.service.execute_mutation(
|
|
109
|
+
endpoint=endpoint,
|
|
110
|
+
variables={
|
|
111
|
+
"input": prepare_input(input_),
|
|
112
|
+
},
|
|
113
|
+
output="",
|
|
114
|
+
)
|
|
115
|
+
if result.get(endpoint) is not None:
|
|
116
|
+
return result.get(endpoint)
|
|
117
|
+
raise GraphQLNoRowsInResultSetError("for mutation attachDataSourceTag")
|
|
@@ -124,3 +124,31 @@ class TaegisSDKDatasourcesQuery:
|
|
|
124
124
|
if result.get(endpoint) is not None:
|
|
125
125
|
return LastSeenAssetsQueryResult.from_dict(result.get(endpoint))
|
|
126
126
|
raise GraphQLNoRowsInResultSetError("for query dataSourceLastSeenAssetsQuery")
|
|
127
|
+
|
|
128
|
+
def get_data_source_tags(self) -> List[DataSourceTag]:
|
|
129
|
+
"""Fetches all tags associated with a given tenant.."""
|
|
130
|
+
endpoint = "getDataSourceTags"
|
|
131
|
+
|
|
132
|
+
result = self.service.execute_query(
|
|
133
|
+
endpoint=endpoint, variables={}, output=build_output_string(DataSourceTag)
|
|
134
|
+
)
|
|
135
|
+
if result.get(endpoint) is not None:
|
|
136
|
+
return DataSourceTag.schema().load(
|
|
137
|
+
[r or {} for r in result.get(endpoint)], many=True
|
|
138
|
+
)
|
|
139
|
+
raise GraphQLNoRowsInResultSetError("for query getDataSourceTags")
|
|
140
|
+
|
|
141
|
+
def get_data_source_tag(self, tag_id: str) -> DataSourceTag:
|
|
142
|
+
"""Fetches a specific tag by its ID.."""
|
|
143
|
+
endpoint = "getDataSourceTag"
|
|
144
|
+
|
|
145
|
+
result = self.service.execute_query(
|
|
146
|
+
endpoint=endpoint,
|
|
147
|
+
variables={
|
|
148
|
+
"tagId": prepare_input(tag_id),
|
|
149
|
+
},
|
|
150
|
+
output=build_output_string(DataSourceTag),
|
|
151
|
+
)
|
|
152
|
+
if result.get(endpoint) is not None:
|
|
153
|
+
return DataSourceTag.from_dict(result.get(endpoint))
|
|
154
|
+
raise GraphQLNoRowsInResultSetError("for query getDataSourceTag")
|
{taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/datasources/types.py
RENAMED
|
@@ -26,6 +26,7 @@ class AuthzAction(str, Enum):
|
|
|
26
26
|
|
|
27
27
|
READ = "READ"
|
|
28
28
|
DELETE = "DELETE"
|
|
29
|
+
CREATE = "CREATE"
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
class HealthState(str, Enum):
|
|
@@ -160,6 +161,9 @@ class DataSourcesWhereInput:
|
|
|
160
161
|
collector_id: Optional[List[str]] = field(
|
|
161
162
|
default=None, metadata=config(field_name="collectorId")
|
|
162
163
|
)
|
|
164
|
+
tag_id: Optional[List[str]] = field(
|
|
165
|
+
default=None, metadata=config(field_name="tagId")
|
|
166
|
+
)
|
|
163
167
|
|
|
164
168
|
|
|
165
169
|
@dataclass_json
|
|
@@ -189,11 +193,61 @@ class ClusterIdentity:
|
|
|
189
193
|
name: Optional[str] = field(default=None, metadata=config(field_name="name"))
|
|
190
194
|
|
|
191
195
|
|
|
196
|
+
@dataclass_json
|
|
197
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
198
|
+
class DataSourceTag:
|
|
199
|
+
"""DataSourceTag."""
|
|
200
|
+
|
|
201
|
+
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
202
|
+
tenant: Optional[str] = field(default=None, metadata=config(field_name="tenant"))
|
|
203
|
+
key: Optional[str] = field(default=None, metadata=config(field_name="key"))
|
|
204
|
+
value: Optional[str] = field(default=None, metadata=config(field_name="value"))
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
@dataclass_json
|
|
208
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
209
|
+
class CreateDataSourceTagInput:
|
|
210
|
+
"""CreateDataSourceTagInput."""
|
|
211
|
+
|
|
212
|
+
key: Optional[str] = field(default=None, metadata=config(field_name="key"))
|
|
213
|
+
value: Optional[str] = field(default=None, metadata=config(field_name="value"))
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
@dataclass_json
|
|
217
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
218
|
+
class DataSourceTagOperationInput:
|
|
219
|
+
"""DataSourceTagOperationInput."""
|
|
220
|
+
|
|
221
|
+
tag_id: Optional[str] = field(default=None, metadata=config(field_name="tagId"))
|
|
222
|
+
asset_ids: Optional[List[str]] = field(
|
|
223
|
+
default=None, metadata=config(field_name="assetIds")
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
@dataclass_json
|
|
228
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
229
|
+
class DataSourceAssetsFilter:
|
|
230
|
+
"""DataSourceAssetsFilter."""
|
|
231
|
+
|
|
232
|
+
status: Optional[List[Union[HealthState, TaegisEnum]]] = field(
|
|
233
|
+
default=None,
|
|
234
|
+
metadata=config(
|
|
235
|
+
encoder=encode_enum,
|
|
236
|
+
decoder=lambda x: decode_enum(HealthState, x),
|
|
237
|
+
field_name="status",
|
|
238
|
+
),
|
|
239
|
+
)
|
|
240
|
+
where: Optional[DataSourcesWhereInput] = field(
|
|
241
|
+
default=None, metadata=config(field_name="where")
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
|
|
192
245
|
@dataclass_json
|
|
193
246
|
@dataclass(order=True, eq=True, frozen=True)
|
|
194
247
|
class LastSeenAsset:
|
|
195
248
|
"""LastSeenAsset."""
|
|
196
249
|
|
|
250
|
+
asset_id: Optional[str] = field(default=None, metadata=config(field_name="assetId"))
|
|
197
251
|
source_id: Optional[str] = field(
|
|
198
252
|
default=None, metadata=config(field_name="sourceId")
|
|
199
253
|
)
|
|
@@ -221,24 +275,15 @@ class LastSeenAsset:
|
|
|
221
275
|
collector: Optional[ClusterIdentity] = field(
|
|
222
276
|
default=None, metadata=config(field_name="collector")
|
|
223
277
|
)
|
|
278
|
+
tags: Optional[List[DataSourceTag]] = field(
|
|
279
|
+
default=None, metadata=config(field_name="tags")
|
|
280
|
+
)
|
|
224
281
|
|
|
225
282
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
status: Optional[List[Union[HealthState, TaegisEnum]]] = field(
|
|
232
|
-
default=None,
|
|
233
|
-
metadata=config(
|
|
234
|
-
encoder=encode_enum,
|
|
235
|
-
decoder=lambda x: decode_enum(HealthState, x),
|
|
236
|
-
field_name="status",
|
|
237
|
-
),
|
|
238
|
-
)
|
|
239
|
-
where: Optional[DataSourcesWhereInput] = field(
|
|
240
|
-
default=None, metadata=config(field_name="where")
|
|
241
|
-
)
|
|
283
|
+
FilterValueResponse = Union[
|
|
284
|
+
FilterValue,
|
|
285
|
+
ClusterIdentity,
|
|
286
|
+
]
|
|
242
287
|
|
|
243
288
|
|
|
244
289
|
@dataclass_json
|
|
@@ -273,12 +318,6 @@ class LastSeenAssetsQueryResult:
|
|
|
273
318
|
)
|
|
274
319
|
|
|
275
320
|
|
|
276
|
-
FilterValueResponse = Union[
|
|
277
|
-
FilterValue,
|
|
278
|
-
ClusterIdentity,
|
|
279
|
-
]
|
|
280
|
-
|
|
281
|
-
|
|
282
321
|
@dataclass_json
|
|
283
322
|
@dataclass(order=True, eq=True, frozen=True)
|
|
284
323
|
class FilterValues:
|
|
@@ -204,6 +204,30 @@ class TaegisSDKEntityContextQuery:
|
|
|
204
204
|
)
|
|
205
205
|
raise GraphQLNoRowsInResultSetError("for query entityContextAssociatedEntities")
|
|
206
206
|
|
|
207
|
+
def entity_context_associated_entity_types(
|
|
208
|
+
self,
|
|
209
|
+
entry_point: EntityContextSingleEntryPoint,
|
|
210
|
+
source: Optional[EntityContextSourceInput] = None,
|
|
211
|
+
) -> EntityContextAssociatedEntityTypesResponse:
|
|
212
|
+
"""None."""
|
|
213
|
+
endpoint = "entityContextAssociatedEntityTypes"
|
|
214
|
+
|
|
215
|
+
result = self.service.execute_query(
|
|
216
|
+
endpoint=endpoint,
|
|
217
|
+
variables={
|
|
218
|
+
"entryPoint": prepare_input(entry_point),
|
|
219
|
+
"source": prepare_input(source),
|
|
220
|
+
},
|
|
221
|
+
output=build_output_string(EntityContextAssociatedEntityTypesResponse),
|
|
222
|
+
)
|
|
223
|
+
if result.get(endpoint) is not None:
|
|
224
|
+
return EntityContextAssociatedEntityTypesResponse.from_dict(
|
|
225
|
+
result.get(endpoint)
|
|
226
|
+
)
|
|
227
|
+
raise GraphQLNoRowsInResultSetError(
|
|
228
|
+
"for query entityContextAssociatedEntityTypes"
|
|
229
|
+
)
|
|
230
|
+
|
|
207
231
|
def entity_context_pivot_ql(
|
|
208
232
|
self,
|
|
209
233
|
entry_point: EntityContextEntryPoint,
|
|
@@ -197,6 +197,15 @@ class EntityContextPageInput:
|
|
|
197
197
|
)
|
|
198
198
|
|
|
199
199
|
|
|
200
|
+
@dataclass_json
|
|
201
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
202
|
+
class EntityContextTypeCounts:
|
|
203
|
+
"""EntityContextTypeCounts."""
|
|
204
|
+
|
|
205
|
+
type: Optional[str] = field(default=None, metadata=config(field_name="type"))
|
|
206
|
+
count: Optional[int] = field(default=None, metadata=config(field_name="count"))
|
|
207
|
+
|
|
208
|
+
|
|
200
209
|
@dataclass_json
|
|
201
210
|
@dataclass(order=True, eq=True, frozen=True)
|
|
202
211
|
class EntityContextPageInfo:
|
|
@@ -392,6 +401,22 @@ class EntityContextWhoIsContact:
|
|
|
392
401
|
)
|
|
393
402
|
|
|
394
403
|
|
|
404
|
+
@dataclass_json
|
|
405
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
406
|
+
class EntityContextSingleEntryPoint:
|
|
407
|
+
"""EntityContextSingleEntryPoint."""
|
|
408
|
+
|
|
409
|
+
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
410
|
+
type: Optional[Union[EntityContextEntryPointType, TaegisEnum]] = field(
|
|
411
|
+
default=None,
|
|
412
|
+
metadata=config(
|
|
413
|
+
encoder=encode_enum,
|
|
414
|
+
decoder=lambda x: decode_enum(EntityContextEntryPointType, x),
|
|
415
|
+
field_name="type",
|
|
416
|
+
),
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
|
|
395
420
|
@dataclass_json
|
|
396
421
|
@dataclass(order=True, eq=True, frozen=True)
|
|
397
422
|
class EntityContextOrigin:
|
|
@@ -461,6 +486,20 @@ class EntityContextRelatedResources:
|
|
|
461
486
|
)
|
|
462
487
|
|
|
463
488
|
|
|
489
|
+
@dataclass_json
|
|
490
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
491
|
+
class EntityContextAssociatedEntityTypesResponse:
|
|
492
|
+
"""EntityContextAssociatedEntityTypesResponse."""
|
|
493
|
+
|
|
494
|
+
total_count: Optional[int] = field(
|
|
495
|
+
default=None, metadata=config(field_name="totalCount")
|
|
496
|
+
)
|
|
497
|
+
error: Optional[str] = field(default=None, metadata=config(field_name="error"))
|
|
498
|
+
types: Optional[List[EntityContextTypeCounts]] = field(
|
|
499
|
+
default=None, metadata=config(field_name="types")
|
|
500
|
+
)
|
|
501
|
+
|
|
502
|
+
|
|
464
503
|
@dataclass_json
|
|
465
504
|
@dataclass(order=True, eq=True, frozen=True)
|
|
466
505
|
class EntityContextPropertyQuery:
|
{taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat/queries.py
RENAMED
|
@@ -136,17 +136,45 @@ class TaegisSDKThreatQuery:
|
|
|
136
136
|
raise GraphQLNoRowsInResultSetError("for query threatIdentitiesByConfidence")
|
|
137
137
|
|
|
138
138
|
def threat_watchlist(
|
|
139
|
-
self,
|
|
139
|
+
self,
|
|
140
|
+
type_: Union[ThreatParentType, TaegisEnum],
|
|
141
|
+
added_after: Optional[str] = None,
|
|
142
|
+
added_before: Optional[str] = None,
|
|
143
|
+
page: Optional[PageInput] = None,
|
|
144
|
+
filters: Optional[WatchlistFilter] = None,
|
|
140
145
|
) -> List[ThreatRelationship]:
|
|
141
146
|
"""Gets a watchlist by type. All results are considered **high confidence**.
|
|
142
147
|
Only IP and DOMAIN types are supported. FILE type has been removed from this endpoint.
|
|
143
|
-
Instead, use the paged endpoint threatTimsMalwareFiles for FILE types
|
|
148
|
+
Instead, use the paged endpoint threatTimsMalwareFiles for FILE types.
|
|
149
|
+
|
|
150
|
+
Results are sorted by the 'created' field in descending order (newest first).
|
|
151
|
+
|
|
152
|
+
Additional filtering options:
|
|
153
|
+
- addedAfter: input timestamp to filter records created after this time
|
|
154
|
+
- addedBefore: input timestamp to filter records created before this time
|
|
155
|
+
- page: Optional pagination controls (offset/limit). If not provided, returns ALL results.
|
|
156
|
+
When paginating, clients must detect the last page by checking if the number of returned
|
|
157
|
+
results is less than the requested limit, or if an empty array is returned.
|
|
158
|
+
- filters: Supports targetRef and confidence filtering
|
|
159
|
+
Examples:
|
|
160
|
+
Confidence Range: filters: { where: { confidence_gte: 70, confidence_lte: 90 } }
|
|
161
|
+
Confidence Minimum: filters: { where: { confidence_gte: 80 } }
|
|
162
|
+
Confidence Maximum: filters: { where: { confidence_lte: 50 } }
|
|
163
|
+
Target Filter: filters: { where: { or: [{ targetRef: "malware_name" }] } }
|
|
164
|
+
Note: Each filter should use either confidence fields OR targetRef, not both in the same where clause
|
|
165
|
+
|
|
166
|
+
Time range examples:
|
|
167
|
+
- addedAfter: "2024-01-01T00:00:00Z", addedBefore: "2024-01-31T23:59:59Z"."""
|
|
144
168
|
endpoint = "threatWatchlist"
|
|
145
169
|
|
|
146
170
|
result = self.service.execute_query(
|
|
147
171
|
endpoint=endpoint,
|
|
148
172
|
variables={
|
|
149
173
|
"type": prepare_input(type_),
|
|
174
|
+
"addedAfter": prepare_input(added_after),
|
|
175
|
+
"addedBefore": prepare_input(added_before),
|
|
176
|
+
"page": prepare_input(page),
|
|
177
|
+
"filters": prepare_input(filters),
|
|
150
178
|
},
|
|
151
179
|
output=build_output_string(ThreatRelationship),
|
|
152
180
|
)
|
|
@@ -157,22 +185,42 @@ class TaegisSDKThreatQuery:
|
|
|
157
185
|
raise GraphQLNoRowsInResultSetError("for query threatWatchlist")
|
|
158
186
|
|
|
159
187
|
def threat_tims_malware_files(
|
|
160
|
-
self,
|
|
188
|
+
self,
|
|
189
|
+
last_created: Optional[str] = None,
|
|
190
|
+
added_after: Optional[str] = None,
|
|
191
|
+
added_before: Optional[str] = None,
|
|
192
|
+
filters: Optional[MalwareFileFilter] = None,
|
|
161
193
|
) -> PagedMalwareFiles:
|
|
162
194
|
"""Get all TIMS 2.0 Malware file hashes. All results are considered **high confidence**.
|
|
163
|
-
This is a paged service, requiring repeated queries. Total number of results can number over 750k.
|
|
195
|
+
This is a cursor-based paged service, requiring repeated queries. Total number of results can number over 750k.
|
|
164
196
|
For the initial query, do not provide any search parameters or set 'last_created' to null.
|
|
165
197
|
Subsequent queries should include the previous query's 'last_created' result from 'PagedMalwareFiles.last_created'
|
|
166
198
|
as the input parameter. Returns pages of 10,000 at a time, sorted by the indicators field 'created' in desc order.
|
|
167
199
|
The returned field 'has_more' will be false when the last page is returned.
|
|
168
200
|
* Note: 'created' refers to an internal field associated with the indicator, not the time the indicator was first found.
|
|
169
|
-
It is only used for sorting
|
|
201
|
+
It is only used for sorting.
|
|
202
|
+
|
|
203
|
+
Additional filtering options:
|
|
204
|
+
- addedAfter: input timestamp to filter records created after this time
|
|
205
|
+
- addedBefore: input timestamp to filter records created before this time
|
|
206
|
+
- filters: Supports threat description filtering via OR array format only
|
|
207
|
+
Example: filters: { where: { or: [{ threatDescription: "malware_name" }] } }
|
|
208
|
+
|
|
209
|
+
Time range examples:
|
|
210
|
+
- addedAfter: "2024-01-01T00:00:00Z", addedBefore: "2024-01-31T23:59:59Z"
|
|
211
|
+
|
|
212
|
+
Pagination: Uses cursor-based pagination with 'last_created' parameter. For small time ranges
|
|
213
|
+
(results < 10k), all data is returned in one response. For larger datasets, use 'last_created'
|
|
214
|
+
to paginate through results.."""
|
|
170
215
|
endpoint = "threatTimsMalwareFiles"
|
|
171
216
|
|
|
172
217
|
result = self.service.execute_query(
|
|
173
218
|
endpoint=endpoint,
|
|
174
219
|
variables={
|
|
175
220
|
"last_created": prepare_input(last_created),
|
|
221
|
+
"addedAfter": prepare_input(added_after),
|
|
222
|
+
"addedBefore": prepare_input(added_before),
|
|
223
|
+
"filters": prepare_input(filters),
|
|
176
224
|
},
|
|
177
225
|
output=build_output_string(PagedMalwareFiles),
|
|
178
226
|
)
|
{taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.4}/taegis_sdk_python/services/threat/types.py
RENAMED
|
@@ -346,6 +346,15 @@ class ThreatPageInput:
|
|
|
346
346
|
limit: Optional[int] = field(default=None, metadata=config(field_name="limit"))
|
|
347
347
|
|
|
348
348
|
|
|
349
|
+
@dataclass_json
|
|
350
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
351
|
+
class PageInput:
|
|
352
|
+
"""PageInput."""
|
|
353
|
+
|
|
354
|
+
limit: Optional[int] = field(default=None, metadata=config(field_name="limit"))
|
|
355
|
+
offset: Optional[int] = field(default=None, metadata=config(field_name="offset"))
|
|
356
|
+
|
|
357
|
+
|
|
349
358
|
@dataclass_json
|
|
350
359
|
@dataclass(order=True, eq=True, frozen=True)
|
|
351
360
|
class Facet:
|
|
@@ -887,6 +896,38 @@ class ThreatReportInput:
|
|
|
887
896
|
tags: Optional[List[str]] = field(default=None, metadata=config(field_name="tags"))
|
|
888
897
|
|
|
889
898
|
|
|
899
|
+
@dataclass_json
|
|
900
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
901
|
+
class MalwareFileWhereInput:
|
|
902
|
+
"""MalwareFileWhereInput."""
|
|
903
|
+
|
|
904
|
+
threat_description: Optional[str] = field(
|
|
905
|
+
default=None, metadata=config(field_name="threatDescription")
|
|
906
|
+
)
|
|
907
|
+
or_: Optional[List["MalwareFileWhereInput"]] = field(
|
|
908
|
+
default=None, metadata=config(field_name="or")
|
|
909
|
+
)
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
@dataclass_json
|
|
913
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
914
|
+
class WatchlistWhereInput:
|
|
915
|
+
"""WatchlistWhereInput."""
|
|
916
|
+
|
|
917
|
+
target_ref: Optional[str] = field(
|
|
918
|
+
default=None, metadata=config(field_name="targetRef")
|
|
919
|
+
)
|
|
920
|
+
confidence_gte: Optional[int] = field(
|
|
921
|
+
default=None, metadata=config(field_name="confidence_gte")
|
|
922
|
+
)
|
|
923
|
+
confidence_lte: Optional[int] = field(
|
|
924
|
+
default=None, metadata=config(field_name="confidence_lte")
|
|
925
|
+
)
|
|
926
|
+
or_: Optional[List["WatchlistWhereInput"]] = field(
|
|
927
|
+
default=None, metadata=config(field_name="or")
|
|
928
|
+
)
|
|
929
|
+
|
|
930
|
+
|
|
890
931
|
@dataclass_json
|
|
891
932
|
@dataclass(order=True, eq=True, frozen=True)
|
|
892
933
|
class FacetInfo:
|
|
@@ -2292,6 +2333,26 @@ class IndicatorFilter:
|
|
|
2292
2333
|
)
|
|
2293
2334
|
|
|
2294
2335
|
|
|
2336
|
+
@dataclass_json
|
|
2337
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
2338
|
+
class MalwareFileFilter:
|
|
2339
|
+
"""MalwareFileFilter."""
|
|
2340
|
+
|
|
2341
|
+
where: Optional[MalwareFileWhereInput] = field(
|
|
2342
|
+
default=None, metadata=config(field_name="where")
|
|
2343
|
+
)
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
@dataclass_json
|
|
2347
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
2348
|
+
class WatchlistFilter:
|
|
2349
|
+
"""WatchlistFilter."""
|
|
2350
|
+
|
|
2351
|
+
where: Optional[WatchlistWhereInput] = field(
|
|
2352
|
+
default=None, metadata=config(field_name="where")
|
|
2353
|
+
)
|
|
2354
|
+
|
|
2355
|
+
|
|
2295
2356
|
@dataclass_json
|
|
2296
2357
|
@dataclass(order=True, eq=True, frozen=True)
|
|
2297
2358
|
class ThreatIdentityRelationship:
|