taegis-sdk-python 1.6.3__tar.gz → 1.6.5__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.5}/PKG-INFO +1 -1
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/_version.py +1 -1
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/queries.py +69 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/types.py +17 -0
- taegis_sdk_python-1.6.5/taegis_sdk_python/services/datasources/mutations.py +117 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/datasources/queries.py +28 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/datasources/types.py +61 -22
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/queries.py +24 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/types.py +39 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/queries.py +15 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/types.py +9 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/types.py +40 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/queries.py +50 -5
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/types.py +79 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/queries.py +13 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/mutations.py +37 -1
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/types.py +20 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/mutations.py +34 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/queries.py +13 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/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.5}/.gitignore +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/LICENSE +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/README.md +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/pyproject.toml +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/_consts.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/authentication.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/alerts/federated_search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/alerts/search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/cases/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/cases/federated_search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/cases/search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/events/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/events/search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/investigations/federated_search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/investigations/search.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/sharelinks/create.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/sharelinks/unfurl.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/config.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/errors.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/logging/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/logging/_default.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/retry/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/retry/_default.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/utils.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/service_core.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/types.py +738 -738
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/datasources/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/datasources/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/mutations.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/queries.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/types.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/templates/__init__.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/templates/_jinja2.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/tokens.py +0 -0
- {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/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.5
|
|
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.5}/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.5}/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.5}/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:
|
|
@@ -289,6 +289,21 @@ class TaegisSDKInvestigations2Query:
|
|
|
289
289
|
return CasesAggregation.from_dict(result.get(endpoint))
|
|
290
290
|
raise GraphQLNoRowsInResultSetError("for query casesAggregation")
|
|
291
291
|
|
|
292
|
+
def cases_is_key_findings_rich_text(self, id_: str) -> bool:
|
|
293
|
+
"""DO NOT USE: casesIsKeyFindingsRichText is meant for the Taegis/Central UIs only. It may be removed at any time without notice."""
|
|
294
|
+
endpoint = "casesIsKeyFindingsRichText"
|
|
295
|
+
|
|
296
|
+
result = self.service.execute_query(
|
|
297
|
+
endpoint=endpoint,
|
|
298
|
+
variables={
|
|
299
|
+
"id": prepare_input(id_),
|
|
300
|
+
},
|
|
301
|
+
output="",
|
|
302
|
+
)
|
|
303
|
+
if result.get(endpoint) is not None:
|
|
304
|
+
return result.get(endpoint)
|
|
305
|
+
raise GraphQLNoRowsInResultSetError("for query casesIsKeyFindingsRichText")
|
|
306
|
+
|
|
292
307
|
def investigation_v2(self, arguments: InvestigationV2Arguments) -> InvestigationV2:
|
|
293
308
|
"""investigationV2 gets a single Investigation.."""
|
|
294
309
|
endpoint = "investigationV2"
|
{taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/types.py
RENAMED
|
@@ -58,6 +58,14 @@ class CentralUser:
|
|
|
58
58
|
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
59
59
|
|
|
60
60
|
|
|
61
|
+
@dataclass_json
|
|
62
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
63
|
+
class CentralClient:
|
|
64
|
+
"""CentralClient."""
|
|
65
|
+
|
|
66
|
+
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
67
|
+
|
|
68
|
+
|
|
61
69
|
@dataclass_json
|
|
62
70
|
@dataclass(order=True, eq=True, frozen=True)
|
|
63
71
|
class CacheInvalidateInput:
|
|
@@ -87,6 +95,7 @@ SubjectIdentity = Union[
|
|
|
87
95
|
TDRUser,
|
|
88
96
|
Client,
|
|
89
97
|
CentralUser,
|
|
98
|
+
CentralClient,
|
|
90
99
|
]
|
|
91
100
|
|
|
92
101
|
|
{taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/types.py
RENAMED
|
@@ -111,6 +111,21 @@ class CachedEntryType(str, Enum):
|
|
|
111
111
|
ALL_LICENSES_FOR_TENANT = "ALL_LICENSES_FOR_TENANT"
|
|
112
112
|
|
|
113
113
|
|
|
114
|
+
class RetentionMonths(str, Enum):
|
|
115
|
+
"""RetentionMonths."""
|
|
116
|
+
|
|
117
|
+
UNKNOWN_MONTHS = "UNKNOWN_MONTHS"
|
|
118
|
+
ZERO_MONTHS = "ZERO_MONTHS"
|
|
119
|
+
ONE_MONTH = "ONE_MONTH"
|
|
120
|
+
THREE_MONTHS = "THREE_MONTHS"
|
|
121
|
+
TWELVE_MONTHS = "TWELVE_MONTHS"
|
|
122
|
+
THIRTEEN_MONTHS = "THIRTEEN_MONTHS"
|
|
123
|
+
EIGHTEEN_MONTHS = "EIGHTEEN_MONTHS"
|
|
124
|
+
TWENTY_FOUR_MONTHS = "TWENTY_FOUR_MONTHS"
|
|
125
|
+
THIRTY_SIX_MONTHS = "THIRTY_SIX_MONTHS"
|
|
126
|
+
SIXTY_MONTHS = "SIXTY_MONTHS"
|
|
127
|
+
|
|
128
|
+
|
|
114
129
|
@dataclass_json
|
|
115
130
|
@dataclass(order=True, eq=True, frozen=True)
|
|
116
131
|
class MappedTenant:
|
|
@@ -263,6 +278,22 @@ class DeleteCachedEntriesOutput:
|
|
|
263
278
|
message: Optional[str] = field(default=None, metadata=config(field_name="message"))
|
|
264
279
|
|
|
265
280
|
|
|
281
|
+
@dataclass_json
|
|
282
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
283
|
+
class RetentionPolicy:
|
|
284
|
+
"""RetentionPolicy."""
|
|
285
|
+
|
|
286
|
+
months: Optional[int] = field(default=None, metadata=config(field_name="months"))
|
|
287
|
+
period: Optional[Union[RetentionMonths, TaegisEnum]] = field(
|
|
288
|
+
default=None,
|
|
289
|
+
metadata=config(
|
|
290
|
+
encoder=encode_enum,
|
|
291
|
+
decoder=lambda x: decode_enum(RetentionMonths, x),
|
|
292
|
+
field_name="period",
|
|
293
|
+
),
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
|
|
266
297
|
@dataclass_json
|
|
267
298
|
@dataclass(order=True, eq=True, frozen=True)
|
|
268
299
|
class ProductCatalogInput:
|
|
@@ -406,6 +437,12 @@ class TenantV4:
|
|
|
406
437
|
support_inherited: Optional[bool] = field(
|
|
407
438
|
default=None, metadata=config(field_name="supportInherited")
|
|
408
439
|
)
|
|
440
|
+
allow_response_actions: Optional[bool] = field(
|
|
441
|
+
default=None, metadata=config(field_name="allowResponseActions")
|
|
442
|
+
)
|
|
443
|
+
actions_approver: Optional[str] = field(
|
|
444
|
+
default=None, metadata=config(field_name="actionsApprover")
|
|
445
|
+
)
|
|
409
446
|
expires_at: Optional[str] = field(
|
|
410
447
|
default=None, metadata=config(field_name="expiresAt")
|
|
411
448
|
)
|
|
@@ -446,6 +483,9 @@ class TenantV4:
|
|
|
446
483
|
central_tenant: Optional[MappedTenant] = field(
|
|
447
484
|
default=None, metadata=config(field_name="centralTenant")
|
|
448
485
|
)
|
|
486
|
+
data_retention_policy: Optional[RetentionPolicy] = field(
|
|
487
|
+
default=None, metadata=config(field_name="dataRetentionPolicy")
|
|
488
|
+
)
|
|
449
489
|
|
|
450
490
|
|
|
451
491
|
@dataclass_json
|
{taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/queries.py
RENAMED
|
@@ -136,17 +136,44 @@ 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
|
+
page: Optional[PageInput] = None,
|
|
142
|
+
filters: Optional[WatchlistFilter] = None,
|
|
140
143
|
) -> List[ThreatRelationship]:
|
|
141
144
|
"""Gets a watchlist by type. All results are considered **high confidence**.
|
|
142
145
|
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
|
|
146
|
+
Instead, use the paged endpoint threatTimsMalwareFiles for FILE types.
|
|
147
|
+
|
|
148
|
+
Results are sorted by the 'created' field in descending order (newest first).
|
|
149
|
+
|
|
150
|
+
Additional filtering options:
|
|
151
|
+
- filters.timeRange: Optional time range filter. If not provided, returns all records.
|
|
152
|
+
Usage scenarios:
|
|
153
|
+
- Only start provided: Returns all records from the specified start time to now (no upper bound)
|
|
154
|
+
- Only end provided: Returns all records from the beginning up to the specified end time (no lower bound)
|
|
155
|
+
- Both provided: Returns records within the specified time range
|
|
156
|
+
- Neither provided: Returns all records (no time filtering)
|
|
157
|
+
Example: filters: { timeRange: { start: "2024-01-01T00:00:00Z", end: "2024-01-31T23:59:59Z" } }
|
|
158
|
+
- filters.where: Field-specific filtering (targetRef and confidence)
|
|
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
|
+
- page: Optional pagination controls (offset/limit). If not provided, returns ALL results.
|
|
166
|
+
When paginating, clients must detect the last page by checking if the number of returned
|
|
167
|
+
results is less than the requested limit, or if an empty array is returned..
|
|
168
|
+
"""
|
|
144
169
|
endpoint = "threatWatchlist"
|
|
145
170
|
|
|
146
171
|
result = self.service.execute_query(
|
|
147
172
|
endpoint=endpoint,
|
|
148
173
|
variables={
|
|
149
174
|
"type": prepare_input(type_),
|
|
175
|
+
"page": prepare_input(page),
|
|
176
|
+
"filters": prepare_input(filters),
|
|
150
177
|
},
|
|
151
178
|
output=build_output_string(ThreatRelationship),
|
|
152
179
|
)
|
|
@@ -157,22 +184,40 @@ class TaegisSDKThreatQuery:
|
|
|
157
184
|
raise GraphQLNoRowsInResultSetError("for query threatWatchlist")
|
|
158
185
|
|
|
159
186
|
def threat_tims_malware_files(
|
|
160
|
-
self,
|
|
187
|
+
self,
|
|
188
|
+
last_created: Optional[str] = None,
|
|
189
|
+
filters: Optional[MalwareFileFilter] = None,
|
|
161
190
|
) -> PagedMalwareFiles:
|
|
162
191
|
"""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.
|
|
192
|
+
This is a cursor-based paged service, requiring repeated queries. Total number of results can number over 750k.
|
|
164
193
|
For the initial query, do not provide any search parameters or set 'last_created' to null.
|
|
165
194
|
Subsequent queries should include the previous query's 'last_created' result from 'PagedMalwareFiles.last_created'
|
|
166
195
|
as the input parameter. Returns pages of 10,000 at a time, sorted by the indicators field 'created' in desc order.
|
|
167
196
|
The returned field 'has_more' will be false when the last page is returned.
|
|
168
197
|
* 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
|
|
198
|
+
It is only used for sorting.
|
|
199
|
+
|
|
200
|
+
Additional filtering options:
|
|
201
|
+
- filters.timeRange: Optional time range filter. If not provided, returns all records.
|
|
202
|
+
Usage scenarios:
|
|
203
|
+
- Only start provided: Returns all records from the specified start time to now (no upper bound)
|
|
204
|
+
- Only end provided: Returns all records from the beginning up to the specified end time (no lower bound)
|
|
205
|
+
- Both provided: Returns records within the specified time range
|
|
206
|
+
- Neither provided: Returns all records (no time filtering)
|
|
207
|
+
Example: filters: { timeRange: { start: "2024-01-01T00:00:00Z", end: "2024-01-31T23:59:59Z" } }
|
|
208
|
+
- filters.where: Threat description filtering via OR array format only
|
|
209
|
+
Example: filters: { where: { or: [{ threatDescription: "malware_name" }] } }
|
|
210
|
+
|
|
211
|
+
Pagination: Uses cursor-based pagination with 'last_created' parameter. For small time ranges
|
|
212
|
+
(results < 10k), all data is returned in one response. For larger datasets, use 'last_created'
|
|
213
|
+
to paginate through results.."""
|
|
170
214
|
endpoint = "threatTimsMalwareFiles"
|
|
171
215
|
|
|
172
216
|
result = self.service.execute_query(
|
|
173
217
|
endpoint=endpoint,
|
|
174
218
|
variables={
|
|
175
219
|
"last_created": prepare_input(last_created),
|
|
220
|
+
"filters": prepare_input(filters),
|
|
176
221
|
},
|
|
177
222
|
output=build_output_string(PagedMalwareFiles),
|
|
178
223
|
)
|