taegis-sdk-python 1.6.1__tar.gz → 1.6.3__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.1 → taegis_sdk_python-1.6.3}/PKG-INFO +2 -2
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/pyproject.toml +1 -1
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/_version.py +1 -1
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/middlewares/utils.py +1 -1
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/service_core.py +27 -12
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/__init__.py +49 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets2/types.py +22 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/authz/queries.py +2 -1
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/authz/types.py +3 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/entity_context/types.py +1 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations2/mutations.py +5 -5
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations2/queries.py +1 -1
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations2/types.py +147 -122
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/process_trees/queries.py +3 -1
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/rules/types.py +2 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants/types.py +44 -73
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants4/types.py +22 -2
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat/types.py +1 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/users/types.py +3 -0
- taegis_sdk_python-1.6.1/taegis_sdk_python/transport/__init__.py +0 -0
- taegis_sdk_python-1.6.1/taegis_sdk_python/transport/aiohttp_websockets.py +0 -1224
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/.gitignore +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/LICENSE +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/README.md +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/_consts.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/authentication.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/alerts/federated_search.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/alerts/search.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/cases/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/cases/federated_search.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/cases/search.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/events/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/events/search.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/investigations/federated_search.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/investigations/search.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/sharelinks/create.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/commons/sharelinks/unfurl.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/config.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/errors.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/middlewares/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/middlewares/logging/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/middlewares/logging/_default.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/middlewares/retry/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/middlewares/retry/_default.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/access_points/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/access_points/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/access_points/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/access_points/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/agent/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/agent/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/agent/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/agent/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts_history/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts_history/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts_history/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts_history/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/alerts_history/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets2/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets2/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets2/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/audits/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/audits/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/audits/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/audits/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/authz/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/authz/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/authz/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/byoti/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/byoti/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/byoti/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/byoti/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/byoti/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/clients/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/clients/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/clients/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/clients/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/collector/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/collector/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/collector/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/collector/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/comments/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/comments/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/comments/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/comments/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/contracted_endpoint/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/contracted_endpoint/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/contracted_endpoint/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/contracted_endpoint/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/contracted_endpoint/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/cql_metadata/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/cql_metadata/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/cql_metadata/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/cql_metadata/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/cql_metadata/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/datasources/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/datasources/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/datasources/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/datasources/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/datasources/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/detector_registry/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/entity_context/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/entity_context/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/entity_context/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/entity_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/event_search/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/event_search/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/event_search/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/event_search/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/events/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/events/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/events/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/events/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/events/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/exports/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/exports/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/exports/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/exports/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/fast_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/fast_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/fast_ioc/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/fast_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/fast_ioc/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/file_info/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/file_info/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/file_info/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/file_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/file_info/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/ingest_stats/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/ingest_stats/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/ingest_stats/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/ingest_stats/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/ingest_stats/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/isensor/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/isensor/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/isensor/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/isensor/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/isensor/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_context/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_context/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_context/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_context/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_context/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_ioc/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_ioc/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_ioc/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_ioc/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/multi_tenant_ioc/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/nl_search/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/nl_search/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/nl_search/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/nl_search/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/nl_search/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notebooks/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notebooks/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notifications/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notifications/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notifications/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/notifications/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/preferences/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/preferences/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/preferences/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/preferences/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/process_trees/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/process_trees/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/process_trees/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/process_trees/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/queries/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/queries/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/queries/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/queries/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/queries/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/roadrunner/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/rules/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/rules/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/rules/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/sharelinks/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/subjects/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/subjects/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/subjects/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/subjects/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/subjects/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenant_profiles/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenant_profiles/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenant_profiles/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenant_profiles/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenant_profiles/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants4/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants4/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants4/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/tenants4/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat_score/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat_score/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat_score/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat_score/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/threat_score/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trigger_action/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trigger_action/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trigger_action/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trigger_action/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trigger_action/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trip/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trip/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trip/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/trip/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/users/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/users/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/users/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/users/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/vdr/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/vdr/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/vdr/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/vdr/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/vdr/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/xdr_central_connector/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/xdr_central_connector/mutations.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/xdr_central_connector/queries.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/xdr_central_connector/subscriptions.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/xdr_central_connector/types.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/templates/__init__.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/templates/_jinja2.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/tokens.py +0 -0
- {taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/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.3
|
|
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
|
|
@@ -197,7 +197,7 @@ Requires-Dist: aiohttp
|
|
|
197
197
|
Requires-Dist: backoff
|
|
198
198
|
Requires-Dist: dataclasses-json
|
|
199
199
|
Requires-Dist: filelock>=3.12.4
|
|
200
|
-
Requires-Dist: gql
|
|
200
|
+
Requires-Dist: gql>=4
|
|
201
201
|
Requires-Dist: graphql-core
|
|
202
202
|
Requires-Dist: jinja2
|
|
203
203
|
Requires-Dist: oauthlib
|
|
@@ -10,14 +10,14 @@ import threading
|
|
|
10
10
|
from datetime import datetime, timedelta
|
|
11
11
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
|
|
12
12
|
|
|
13
|
-
from gql import Client,
|
|
13
|
+
from gql import Client, GraphQLRequest
|
|
14
14
|
from gql.transport import Transport
|
|
15
15
|
from gql.transport.aiohttp import AIOHTTPTransport
|
|
16
|
+
from gql.transport.aiohttp_websockets import AIOHTTPWebsocketsTransport
|
|
16
17
|
from graphql import GraphQLError, GraphQLField, GraphQLSchema
|
|
17
18
|
|
|
18
19
|
from taegis_sdk_python._version import __version__
|
|
19
20
|
from taegis_sdk_python.errors import InvalidGraphQLEndpoint
|
|
20
|
-
from taegis_sdk_python.transport.aiohttp_websockets import AIOHTTPWebsocketsTransport
|
|
21
21
|
from taegis_sdk_python.utils import async_block, prepare_variables, remove_node
|
|
22
22
|
|
|
23
23
|
if TYPE_CHECKING: # pragma: no cover
|
|
@@ -497,13 +497,22 @@ class ServiceCore:
|
|
|
497
497
|
}
|
|
498
498
|
)
|
|
499
499
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
query,
|
|
500
|
+
graphql_request = GraphQLRequest(
|
|
501
|
+
request=query_string,
|
|
503
502
|
variable_values=prepare_variables(variables),
|
|
503
|
+
)
|
|
504
|
+
|
|
505
|
+
client = self.sync_client
|
|
506
|
+
|
|
507
|
+
response = await client.execute_async(
|
|
508
|
+
graphql_request,
|
|
504
509
|
extra_args=extra_args,
|
|
505
510
|
)
|
|
506
511
|
|
|
512
|
+
self.service.response_headers = client.transport.response_headers
|
|
513
|
+
|
|
514
|
+
return response
|
|
515
|
+
|
|
507
516
|
@async_block
|
|
508
517
|
async def subscribe(
|
|
509
518
|
self, query_string: str, variables: Optional[Dict[str, Any]] = None
|
|
@@ -522,15 +531,21 @@ class ServiceCore:
|
|
|
522
531
|
List[Any]
|
|
523
532
|
List of subscription results
|
|
524
533
|
"""
|
|
525
|
-
|
|
534
|
+
graphql_request = GraphQLRequest(
|
|
535
|
+
request=query_string,
|
|
536
|
+
variable_values=prepare_variables(variables),
|
|
537
|
+
)
|
|
538
|
+
|
|
526
539
|
results = []
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
):
|
|
540
|
+
|
|
541
|
+
client = self.ws_client
|
|
542
|
+
|
|
543
|
+
async with client as session:
|
|
544
|
+
async for result in session.subscribe(graphql_request):
|
|
532
545
|
results.append(result)
|
|
533
546
|
|
|
547
|
+
self.service.response_headers = client.transport.response_headers
|
|
548
|
+
|
|
534
549
|
return results[:-1]
|
|
535
550
|
|
|
536
551
|
@async_block
|
|
@@ -576,7 +591,7 @@ class ServiceCore:
|
|
|
576
591
|
# output string is valid
|
|
577
592
|
for _ in range(10000):
|
|
578
593
|
try:
|
|
579
|
-
session.client.validate(
|
|
594
|
+
session.client.validate(GraphQLRequest(request=query_string))
|
|
580
595
|
break
|
|
581
596
|
|
|
582
597
|
except GraphQLError as exc:
|
|
@@ -4,12 +4,14 @@ Taegis SDK Python GraphQL Service manager.
|
|
|
4
4
|
|
|
5
5
|
import logging
|
|
6
6
|
import threading
|
|
7
|
+
from collections.abc import Mapping
|
|
7
8
|
from ssl import SSLContext
|
|
8
9
|
from typing import Any, Dict, Literal, Optional, Union
|
|
9
10
|
|
|
10
11
|
import aiohttp
|
|
11
12
|
from aiohttp.client_reqrep import Fingerprint
|
|
12
13
|
from aiohttp.typedefs import LooseHeaders
|
|
14
|
+
from multidict import CIMultiDict, CIMultiDictProxy
|
|
13
15
|
|
|
14
16
|
from taegis_sdk_python._consts import (
|
|
15
17
|
TAEGIS_ENVIRONMENT_URLS,
|
|
@@ -102,6 +104,7 @@ class GraphQLService:
|
|
|
102
104
|
max_message_size: int = 0,
|
|
103
105
|
use_universal_authentication: bool = False,
|
|
104
106
|
middlewares=None,
|
|
107
|
+
reuse_request_id=False,
|
|
105
108
|
): # pylint: disable=too-many-statements
|
|
106
109
|
"""
|
|
107
110
|
GraphQLService
|
|
@@ -144,6 +147,8 @@ class GraphQLService:
|
|
|
144
147
|
ValueError
|
|
145
148
|
environment must be charlie, delta, echo, or foxtrot (or equivalent)
|
|
146
149
|
"""
|
|
150
|
+
self.response_headers: CIMultiDictProxy[str] = CIMultiDictProxy(CIMultiDict())
|
|
151
|
+
|
|
147
152
|
self._environments = environments or TAEGIS_ENVIRONMENT_URLS
|
|
148
153
|
self._environment = environment or list(self._environments)[0]
|
|
149
154
|
self._use_universal_authentication = use_universal_authentication
|
|
@@ -177,6 +182,7 @@ class GraphQLService:
|
|
|
177
182
|
self._execute_timeout = execute_timeout
|
|
178
183
|
self._max_message_size = max_message_size
|
|
179
184
|
self._middlewares = middlewares or ()
|
|
185
|
+
self._reuse_request_id = reuse_request_id
|
|
180
186
|
|
|
181
187
|
self._access_points = None
|
|
182
188
|
self._agent = None
|
|
@@ -231,6 +237,37 @@ class GraphQLService:
|
|
|
231
237
|
self._vdr = None
|
|
232
238
|
self._xdr_central_connector = None
|
|
233
239
|
|
|
240
|
+
def __eq__(self, other):
|
|
241
|
+
"""Compare equality of a GraphQLService.
|
|
242
|
+
|
|
243
|
+
As the GraphQService is a network service, equality is limited to the
|
|
244
|
+
context in which a request will be made.
|
|
245
|
+
"""
|
|
246
|
+
if isinstance(other, GraphQLService):
|
|
247
|
+
return (
|
|
248
|
+
self.tenant_id == other.tenant_id
|
|
249
|
+
and self._environments[self.environment]
|
|
250
|
+
== other._environments[other.environment]
|
|
251
|
+
and self.url == other.url
|
|
252
|
+
and self.gateway == other.gateway
|
|
253
|
+
)
|
|
254
|
+
return NotImplemented
|
|
255
|
+
|
|
256
|
+
def __hash__(self):
|
|
257
|
+
"""Hash of a GraphQLService.
|
|
258
|
+
|
|
259
|
+
As the GraphQService is a network service, hash values are limited to the
|
|
260
|
+
context in which a request will be made.
|
|
261
|
+
"""
|
|
262
|
+
return hash(
|
|
263
|
+
(
|
|
264
|
+
self.tenant_id,
|
|
265
|
+
self._environments[self.environment],
|
|
266
|
+
self.url,
|
|
267
|
+
self.gateway,
|
|
268
|
+
)
|
|
269
|
+
)
|
|
270
|
+
|
|
234
271
|
def __call__(self, **kwargs):
|
|
235
272
|
if threading.get_ident() not in self._context_kwargs:
|
|
236
273
|
self._context_kwargs[threading.get_ident()] = []
|
|
@@ -313,6 +350,11 @@ class GraphQLService:
|
|
|
313
350
|
"""Taegis Tenant Context."""
|
|
314
351
|
return self._context_manager.get("tenant_id", self._tenant_id)
|
|
315
352
|
|
|
353
|
+
@property
|
|
354
|
+
def reuse_request_id(self):
|
|
355
|
+
"""Reuse Previous Taegis X-Request-Id in response_headers."""
|
|
356
|
+
return self._context_manager.get("reuse_request_id", self._reuse_request_id)
|
|
357
|
+
|
|
316
358
|
@property
|
|
317
359
|
def access_token(self):
|
|
318
360
|
"""Taegis Access Token."""
|
|
@@ -357,6 +399,13 @@ class GraphQLService:
|
|
|
357
399
|
if self.tenant_id:
|
|
358
400
|
headers["X-Tenant-Context"] = self.tenant_id
|
|
359
401
|
|
|
402
|
+
if (
|
|
403
|
+
self.reuse_request_id
|
|
404
|
+
and isinstance(self.response_headers, Mapping)
|
|
405
|
+
and (x_request_id := self.response_headers.get("X-Request-Id"))
|
|
406
|
+
):
|
|
407
|
+
headers["X-Amzn-Trace-Id"] = x_request_id
|
|
408
|
+
|
|
360
409
|
headers.update(self.extra_headers)
|
|
361
410
|
|
|
362
411
|
return headers
|
{taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/assets2/types.py
RENAMED
|
@@ -108,6 +108,8 @@ class AssetSearchOrderByInputV2(str, Enum):
|
|
|
108
108
|
VULNERABILITY_STATUS_DESC = "vulnerability_status_desc"
|
|
109
109
|
VENDOR_PROVIDED_HEALTH_ASC = "vendor_provided_health_asc"
|
|
110
110
|
VENDOR_PROVIDED_HEALTH_DESC = "vendor_provided_health_desc"
|
|
111
|
+
VENDOR_PROVIDED_HEALTH_RAW_ASC = "vendor_provided_health_raw_asc"
|
|
112
|
+
VENDOR_PROVIDED_HEALTH_RAW_DESC = "vendor_provided_health_raw_desc"
|
|
111
113
|
USERNAME_ASC = "username_asc"
|
|
112
114
|
USERNAME_DESC = "username_desc"
|
|
113
115
|
REBOOT_REQUIRED_ASC = "reboot_required_asc"
|
|
@@ -118,6 +120,8 @@ class AssetSearchOrderByInputV2(str, Enum):
|
|
|
118
120
|
BIOS_SERIAL_DESC = "bios_serial_desc"
|
|
119
121
|
FIRST_DISK_SERIAL_ASC = "first_disk_serial_asc"
|
|
120
122
|
FIRST_DISK_SERIAL_DESC = "first_disk_serial_desc"
|
|
123
|
+
PENDING_UNINSTALL_ASC = "pending_uninstall_asc"
|
|
124
|
+
PENDING_UNINSTALL_DESC = "pending_uninstall_desc"
|
|
121
125
|
|
|
122
126
|
|
|
123
127
|
class AssetHostnameSearchOrderByInput(str, Enum):
|
|
@@ -1208,6 +1212,9 @@ class AssetWhereInputV2:
|
|
|
1208
1212
|
sensor_version: Optional[str] = field(
|
|
1209
1213
|
default=None, metadata=config(field_name="sensorVersion")
|
|
1210
1214
|
)
|
|
1215
|
+
vendor_provided_health_raw: Optional[str] = field(
|
|
1216
|
+
default=None, metadata=config(field_name="vendorProvidedHealthRaw")
|
|
1217
|
+
)
|
|
1211
1218
|
system_type: Optional[str] = field(
|
|
1212
1219
|
default=None, metadata=config(field_name="systemType")
|
|
1213
1220
|
)
|
|
@@ -1250,6 +1257,12 @@ class AssetWhereInputV2:
|
|
|
1250
1257
|
reboot_required: Optional[bool] = field(
|
|
1251
1258
|
default=None, metadata=config(field_name="rebootRequired")
|
|
1252
1259
|
)
|
|
1260
|
+
agent_mode: Optional[str] = field(
|
|
1261
|
+
default=None, metadata=config(field_name="agentMode")
|
|
1262
|
+
)
|
|
1263
|
+
pending_uninstall: Optional[bool] = field(
|
|
1264
|
+
default=None, metadata=config(field_name="pendingUninstall")
|
|
1265
|
+
)
|
|
1253
1266
|
and_: Optional[List["AssetWhereInputV2"]] = field(
|
|
1254
1267
|
default=None, metadata=config(field_name="and")
|
|
1255
1268
|
)
|
|
@@ -1408,9 +1421,18 @@ class AssetV2:
|
|
|
1408
1421
|
uninstall: Optional[bool] = field(
|
|
1409
1422
|
default=None, metadata=config(field_name="uninstall")
|
|
1410
1423
|
)
|
|
1424
|
+
vendor_provided_health_raw: Optional[str] = field(
|
|
1425
|
+
default=None, metadata=config(field_name="vendorProvidedHealthRaw")
|
|
1426
|
+
)
|
|
1411
1427
|
reboot_required: Optional[bool] = field(
|
|
1412
1428
|
default=None, metadata=config(field_name="rebootRequired")
|
|
1413
1429
|
)
|
|
1430
|
+
agent_mode: Optional[str] = field(
|
|
1431
|
+
default=None, metadata=config(field_name="agentMode")
|
|
1432
|
+
)
|
|
1433
|
+
pending_uninstall: Optional[bool] = field(
|
|
1434
|
+
default=None, metadata=config(field_name="pendingUninstall")
|
|
1435
|
+
)
|
|
1414
1436
|
hostnames: Optional[List[HostnameV2]] = field(
|
|
1415
1437
|
default=None, metadata=config(field_name="hostnames")
|
|
1416
1438
|
)
|
{taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/authz/queries.py
RENAMED
|
@@ -262,7 +262,7 @@ class TaegisSDKAuthzQuery:
|
|
|
262
262
|
raise GraphQLNoRowsInResultSetError("for query authzCanSubjectAssumeAllTenants")
|
|
263
263
|
|
|
264
264
|
def authz_can_subject_assign_role(
|
|
265
|
-
self, id_: str
|
|
265
|
+
self, id_: str, target_subject_id: Optional[str] = None
|
|
266
266
|
) -> AuthzCanSubjectAssignRoleResponse:
|
|
267
267
|
"""Check if the subject can assign the input role."""
|
|
268
268
|
endpoint = "authzCanSubjectAssignRole"
|
|
@@ -271,6 +271,7 @@ class TaegisSDKAuthzQuery:
|
|
|
271
271
|
endpoint=endpoint,
|
|
272
272
|
variables={
|
|
273
273
|
"id": prepare_input(id_),
|
|
274
|
+
"targetSubjectID": prepare_input(target_subject_id),
|
|
274
275
|
},
|
|
275
276
|
output=build_output_string(AuthzCanSubjectAssignRoleResponse),
|
|
276
277
|
)
|
{taegis_sdk_python-1.6.1 → taegis_sdk_python-1.6.3}/taegis_sdk_python/services/authz/types.py
RENAMED
|
@@ -404,6 +404,9 @@ class AuthzCanSubjectAssignRoleResponse:
|
|
|
404
404
|
subject_can_assign: Optional[bool] = field(
|
|
405
405
|
default=None, metadata=config(field_name="subjectCanAssign")
|
|
406
406
|
)
|
|
407
|
+
subject_can_deactivate: Optional[bool] = field(
|
|
408
|
+
default=None, metadata=config(field_name="subjectCanDeactivate")
|
|
409
|
+
)
|
|
407
410
|
role: Optional[AuthzRole] = field(default=None, metadata=config(field_name="role"))
|
|
408
411
|
absent_permissions: Optional[List[AuthzPermission]] = field(
|
|
409
412
|
default=None, metadata=config(field_name="absentPermissions")
|
|
@@ -955,6 +955,7 @@ class EntityContextEntity:
|
|
|
955
955
|
|
|
956
956
|
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
957
957
|
type: Optional[str] = field(default=None, metadata=config(field_name="type"))
|
|
958
|
+
subtype: Optional[str] = field(default=None, metadata=config(field_name="subtype"))
|
|
958
959
|
first_seen: Optional[str] = field(
|
|
959
960
|
default=None, metadata=config(field_name="firstSeen")
|
|
960
961
|
)
|
|
@@ -72,7 +72,7 @@ class TaegisSDKInvestigations2Mutation:
|
|
|
72
72
|
The response will include the evidence that the service will attempt to add to the case.
|
|
73
73
|
|
|
74
74
|
Adding evidence to cases is an asynchronous operation.
|
|
75
|
-
It will typically finish pretty quickly, but added
|
|
75
|
+
It will typically finish pretty quickly, but added detections/events will may not show up in the returned case until the async job is fully complete.
|
|
76
76
|
The processing status, that is found on the case type will reflect the state of the processing job.
|
|
77
77
|
Once the status is set to 'SUCCESS' the background job is complete and requesting the case will return the related evidence.
|
|
78
78
|
|
|
@@ -98,7 +98,7 @@ class TaegisSDKInvestigations2Mutation:
|
|
|
98
98
|
The response will include the evidence that the service will attempt to remove from the case.
|
|
99
99
|
|
|
100
100
|
Removing evidence from cases is an asynchronous operation.
|
|
101
|
-
It will typically finish pretty quickly, but removed
|
|
101
|
+
It will typically finish pretty quickly, but removed detections/events will can remain attached to the case until the async job is fully complete.
|
|
102
102
|
The processing status, that is found on the case type will reflect the state of the processing job.
|
|
103
103
|
Once the status is set to 'SUCCESS' the background job is complete and requesting the case will only return evidence that was not removed.
|
|
104
104
|
|
|
@@ -119,14 +119,14 @@ class TaegisSDKInvestigations2Mutation:
|
|
|
119
119
|
|
|
120
120
|
def close_case(self, input_: CloseCaseInput) -> Case:
|
|
121
121
|
"""closeCase will close an existing case.
|
|
122
|
-
If the case has
|
|
122
|
+
If the case has detections attached to it, the detectionsResolutionStatus field is required and detections will be resolved based on the provided status.
|
|
123
123
|
Once a case is closed, it can no longer be edited or have evidence added to it while in the closed state, it can only be archived.
|
|
124
124
|
A closed case can be reopened if changes are needed after closing.
|
|
125
125
|
|
|
126
126
|
Resolving evidence in a case is an asynchronous operation.
|
|
127
|
-
It will typically finish pretty quickly, but resolving
|
|
127
|
+
It will typically finish pretty quickly, but resolving detections will may not reflect the updated status until the async job is fully complete.
|
|
128
128
|
The processing status, that is found on the case type will reflect the state of the processing job.
|
|
129
|
-
Once the status is set to 'SUCCESS' the background job is complete and the
|
|
129
|
+
Once the status is set to 'SUCCESS' the background job is complete and the detections will have been updated.
|
|
130
130
|
|
|
131
131
|
Adding, removing or updating evidence (closing a case) while other jobs are processing for a given case will cause the jobs to queue.
|
|
132
132
|
Jobs will be worked through in the order they were received.."""
|
|
@@ -157,7 +157,7 @@ class TaegisSDKInvestigations2Query:
|
|
|
157
157
|
raise GraphQLNoRowsInResultSetError("for query exportCaseResources")
|
|
158
158
|
|
|
159
159
|
def case_timeline(self, arguments: CaseTimelineArguments) -> CaseTimeline:
|
|
160
|
-
"""caseTimeline returns a case timeline detailing the order of
|
|
160
|
+
"""caseTimeline returns a case timeline detailing the order of detections, events and other actions taken in relation to a case.."""
|
|
161
161
|
endpoint = "caseTimeline"
|
|
162
162
|
|
|
163
163
|
result = self.service.execute_query(
|