taegis-sdk-python 1.0.1__tar.gz → 1.0.2__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.0.1/taegis_sdk_python.egg-info → taegis-sdk-python-1.0.2}/PKG-INFO +1 -1
- taegis-sdk-python-1.0.2/taegis_sdk_python/_version.py +1 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/service_core.py +16 -20
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/__init__.py +9 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/types.py +24 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/types.py +48 -39
- taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/__init__.py +29 -0
- taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/mutations.py +31 -0
- taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/queries.py +89 -0
- taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/subscriptions.py +31 -0
- taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/types.py +114 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/types.py +52 -21
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/utils.py +47 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2/taegis_sdk_python.egg-info}/PKG-INFO +1 -1
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/SOURCES.txt +5 -0
- taegis-sdk-python-1.0.1/taegis_sdk_python/_version.py +0 -1
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/LICENSE +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/MANIFEST.in +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/README.md +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/requirements-dev.txt +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/requirements-test.txt +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/requirements.txt +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/setup.cfg +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/setup.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/_consts.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/authentication.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/config.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/errors.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/__init__.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/mutations.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/queries.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/types.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/tokens.py +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/dependency_links.txt +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/requires.txt +0 -0
- {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v1.0.2"
|
|
@@ -13,7 +13,7 @@ from gql.transport.websockets import WebsocketsTransport
|
|
|
13
13
|
from graphql import GraphQLField, GraphQLSchema, GraphQLError
|
|
14
14
|
from taegis_sdk_python._version import __version__
|
|
15
15
|
from taegis_sdk_python.errors import InvalidGraphQLEndpoint
|
|
16
|
-
from taegis_sdk_python.utils import async_block, prepare_variables
|
|
16
|
+
from taegis_sdk_python.utils import async_block, prepare_variables, remove_node
|
|
17
17
|
|
|
18
18
|
if TYPE_CHECKING: # pragma: no cover
|
|
19
19
|
from taegis_sdk_python.services import GraphQLService
|
|
@@ -252,35 +252,31 @@ class ServiceCore:
|
|
|
252
252
|
str
|
|
253
253
|
GraphQL string
|
|
254
254
|
"""
|
|
255
|
+
query_string = self._build_output_query(
|
|
256
|
+
operation_type=operation_type,
|
|
257
|
+
endpoint=endpoint,
|
|
258
|
+
graphql_field=graphql_field,
|
|
259
|
+
output=output,
|
|
260
|
+
)
|
|
261
|
+
query_string = " ".join(query_string.split())
|
|
262
|
+
|
|
255
263
|
# open a connection for introspection and download schema
|
|
256
264
|
with self.sync_client as session:
|
|
257
265
|
# if multiple fields are invalid, we want to iterate until the
|
|
258
266
|
# output string is valid
|
|
259
|
-
|
|
260
|
-
query_string = self._build_output_query(
|
|
261
|
-
operation_type=operation_type,
|
|
262
|
-
endpoint=endpoint,
|
|
263
|
-
graphql_field=graphql_field,
|
|
264
|
-
output=output,
|
|
265
|
-
)
|
|
266
|
-
|
|
267
|
-
# we don't want to infinitely process this, so if we break
|
|
268
|
-
# if the output string doesn't exist, or all the fields have been
|
|
269
|
-
# removed
|
|
270
|
-
if not (output or any(char not in {" ", "{", "}"} for char in output)):
|
|
271
|
-
break
|
|
272
|
-
|
|
267
|
+
for _ in range(10000):
|
|
273
268
|
try:
|
|
274
269
|
session.client.validate(gql(query_string))
|
|
275
270
|
break
|
|
276
271
|
|
|
277
272
|
except GraphQLError as exc:
|
|
278
273
|
if "Cannot query field" in exc.message:
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
274
|
+
log.warning(
|
|
275
|
+
f"{self.service.environment} - field {exc.nodes[0].name.value} not found. Removing from query string..."
|
|
276
|
+
)
|
|
277
|
+
query_string = remove_node(
|
|
278
|
+
query_string, exc.nodes[0], exc.locations[0]
|
|
279
|
+
)
|
|
284
280
|
else:
|
|
285
281
|
raise exc
|
|
286
282
|
|
|
@@ -28,6 +28,7 @@ from taegis_sdk_python.services.entity_profile import EntityProfileService
|
|
|
28
28
|
from taegis_sdk_python.services.event_search import EventSearchService
|
|
29
29
|
from taegis_sdk_python.services.events import EventsService
|
|
30
30
|
from taegis_sdk_python.services.exports import ExportsService
|
|
31
|
+
from taegis_sdk_python.services.fast_ioc import FastIocService
|
|
31
32
|
from taegis_sdk_python.services.investigations import InvestigationsService
|
|
32
33
|
from taegis_sdk_python.services.investigations2 import Investigations2Service
|
|
33
34
|
from taegis_sdk_python.services.mitre_attack_info import MitreAttackInfoService
|
|
@@ -109,6 +110,7 @@ class GraphQLService:
|
|
|
109
110
|
self._event_search = None
|
|
110
111
|
self._events = None
|
|
111
112
|
self._exports = None
|
|
113
|
+
self._fast_ioc = None
|
|
112
114
|
self._investigations = None
|
|
113
115
|
self._investigations2 = None
|
|
114
116
|
self._mitre_attack_info = None
|
|
@@ -315,6 +317,13 @@ class GraphQLService:
|
|
|
315
317
|
self._exports = ExportsService(self)
|
|
316
318
|
return self._exports
|
|
317
319
|
|
|
320
|
+
@property
|
|
321
|
+
def fast_ioc(self):
|
|
322
|
+
"""Fast IOC Service Endpoint."""
|
|
323
|
+
if not self._fast_ioc:
|
|
324
|
+
self._fast_ioc = FastIocService(self)
|
|
325
|
+
return self._fast_ioc
|
|
326
|
+
|
|
318
327
|
@property
|
|
319
328
|
def investigations(self):
|
|
320
329
|
"""Investigations Service Endpoint."""
|
{taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/types.py
RENAMED
|
@@ -425,28 +425,43 @@ class AssetWhereInputV2:
|
|
|
425
425
|
group_name_contains: Optional[str] = field(
|
|
426
426
|
default=None, metadata=config(field_name="groupName_contains")
|
|
427
427
|
)
|
|
428
|
+
group_name_autocomplete: Optional[str] = field(
|
|
429
|
+
default=None, metadata=config(field_name="groupName_autocomplete")
|
|
430
|
+
)
|
|
428
431
|
host_id: Optional[str] = field(default=None, metadata=config(field_name="hostId"))
|
|
429
432
|
host_id_contains: Optional[str] = field(
|
|
430
433
|
default=None, metadata=config(field_name="hostId_contains")
|
|
431
434
|
)
|
|
435
|
+
host_id_autocomplete: Optional[str] = field(
|
|
436
|
+
default=None, metadata=config(field_name="hostId_autocomplete")
|
|
437
|
+
)
|
|
432
438
|
hostname: Optional[str] = field(
|
|
433
439
|
default=None, metadata=config(field_name="hostname")
|
|
434
440
|
)
|
|
435
441
|
hostname_contains: Optional[str] = field(
|
|
436
442
|
default=None, metadata=config(field_name="hostname_contains")
|
|
437
443
|
)
|
|
444
|
+
hostname_autocomplete: Optional[str] = field(
|
|
445
|
+
default=None, metadata=config(field_name="hostname_autocomplete")
|
|
446
|
+
)
|
|
438
447
|
investigation_id: Optional[str] = field(
|
|
439
448
|
default=None, metadata=config(field_name="investigationId")
|
|
440
449
|
)
|
|
441
450
|
investigation_id_contains: Optional[str] = field(
|
|
442
451
|
default=None, metadata=config(field_name="investigationId_contains")
|
|
443
452
|
)
|
|
453
|
+
investigation_id_autocomplete: Optional[str] = field(
|
|
454
|
+
default=None, metadata=config(field_name="investigationId_autocomplete")
|
|
455
|
+
)
|
|
444
456
|
ip_address: Optional[str] = field(
|
|
445
457
|
default=None, metadata=config(field_name="ipAddress")
|
|
446
458
|
)
|
|
447
459
|
ip_address_contains: Optional[str] = field(
|
|
448
460
|
default=None, metadata=config(field_name="ipAddress_contains")
|
|
449
461
|
)
|
|
462
|
+
ip_address_autocomplete: Optional[str] = field(
|
|
463
|
+
default=None, metadata=config(field_name="ipAddress_autocomplete")
|
|
464
|
+
)
|
|
450
465
|
isolation_status: Optional[str] = field(
|
|
451
466
|
default=None, metadata=config(field_name="isolationStatus")
|
|
452
467
|
)
|
|
@@ -471,6 +486,9 @@ class AssetWhereInputV2:
|
|
|
471
486
|
mac_address_contains: Optional[str] = field(
|
|
472
487
|
default=None, metadata=config(field_name="macAddress_contains")
|
|
473
488
|
)
|
|
489
|
+
mac_address_autocomplete: Optional[str] = field(
|
|
490
|
+
default=None, metadata=config(field_name="macAddress_autocomplete")
|
|
491
|
+
)
|
|
474
492
|
os_distributor: Optional[str] = field(
|
|
475
493
|
default=None, metadata=config(field_name="osDistributor")
|
|
476
494
|
)
|
|
@@ -507,6 +525,9 @@ class AssetWhereInputV2:
|
|
|
507
525
|
username_contains: Optional[str] = field(
|
|
508
526
|
default=None, metadata=config(field_name="username_contains")
|
|
509
527
|
)
|
|
528
|
+
username_autocomplete: Optional[str] = field(
|
|
529
|
+
default=None, metadata=config(field_name="username_autocomplete")
|
|
530
|
+
)
|
|
510
531
|
and_: Optional[List["AssetWhereInputV2"]] = field(
|
|
511
532
|
default=None, metadata=config(field_name="and")
|
|
512
533
|
)
|
|
@@ -522,6 +543,9 @@ class AssetWhereInputV2:
|
|
|
522
543
|
tags_contains: Optional[TagWhereInputV2] = field(
|
|
523
544
|
default=None, metadata=config(field_name="tags_contains")
|
|
524
545
|
)
|
|
546
|
+
tags_autocomplete: Optional[TagWhereInputV2] = field(
|
|
547
|
+
default=None, metadata=config(field_name="tags_autocomplete")
|
|
548
|
+
)
|
|
525
549
|
|
|
526
550
|
|
|
527
551
|
@dataclass_json
|
{taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/types.py
RENAMED
|
@@ -310,45 +310,6 @@ class SchedulesFilters:
|
|
|
310
310
|
)
|
|
311
311
|
|
|
312
312
|
|
|
313
|
-
@dataclass_json
|
|
314
|
-
@dataclass(order=True, eq=True, frozen=True)
|
|
315
|
-
class ScheduleEditInput:
|
|
316
|
-
"""ScheduleEditInput."""
|
|
317
|
-
|
|
318
|
-
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
319
|
-
name: Optional[str] = field(default=None, metadata=config(field_name="name"))
|
|
320
|
-
description: Optional[str] = field(
|
|
321
|
-
default=None, metadata=config(field_name="description")
|
|
322
|
-
)
|
|
323
|
-
filters: Optional[dict] = field(default=None, metadata=config(field_name="filters"))
|
|
324
|
-
interval: Optional[int] = field(
|
|
325
|
-
default=None, metadata=config(field_name="interval")
|
|
326
|
-
)
|
|
327
|
-
day_of_month: Optional[int] = field(
|
|
328
|
-
default=None, metadata=config(field_name="dayOfMonth")
|
|
329
|
-
)
|
|
330
|
-
recipients: Optional[List[str]] = field(
|
|
331
|
-
default=None, metadata=config(field_name="recipients")
|
|
332
|
-
)
|
|
333
|
-
red_ql_query: Optional[str] = field(
|
|
334
|
-
default=None, metadata=config(field_name="redQLQuery")
|
|
335
|
-
)
|
|
336
|
-
generate_csv_export: Optional[bool] = field(
|
|
337
|
-
default=None, metadata=config(field_name="generateCSVExport")
|
|
338
|
-
)
|
|
339
|
-
run_at: Optional[str] = field(default=None, metadata=config(field_name="runAt"))
|
|
340
|
-
share_with_admin_group: Optional[bool] = field(
|
|
341
|
-
default=None, metadata=config(field_name="shareWithAdminGroup")
|
|
342
|
-
)
|
|
343
|
-
locale: Optional[str] = field(default=None, metadata=config(field_name="locale"))
|
|
344
|
-
chart_type: Optional[ReportChartType] = field(
|
|
345
|
-
default=None, metadata=config(field_name="chartType")
|
|
346
|
-
)
|
|
347
|
-
cadence: Optional[Cadence] = field(
|
|
348
|
-
default=None, metadata=config(field_name="cadence")
|
|
349
|
-
)
|
|
350
|
-
|
|
351
|
-
|
|
352
313
|
@dataclass_json
|
|
353
314
|
@dataclass(order=True, eq=True, frozen=True)
|
|
354
315
|
class ReportsFilters:
|
|
@@ -513,6 +474,48 @@ class AllSchedulesInput:
|
|
|
513
474
|
)
|
|
514
475
|
|
|
515
476
|
|
|
477
|
+
@dataclass_json
|
|
478
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
479
|
+
class ScheduleEditInput:
|
|
480
|
+
"""ScheduleEditInput."""
|
|
481
|
+
|
|
482
|
+
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
483
|
+
name: Optional[str] = field(default=None, metadata=config(field_name="name"))
|
|
484
|
+
description: Optional[str] = field(
|
|
485
|
+
default=None, metadata=config(field_name="description")
|
|
486
|
+
)
|
|
487
|
+
filters: Optional[dict] = field(default=None, metadata=config(field_name="filters"))
|
|
488
|
+
interval: Optional[int] = field(
|
|
489
|
+
default=None, metadata=config(field_name="interval")
|
|
490
|
+
)
|
|
491
|
+
day_of_month: Optional[int] = field(
|
|
492
|
+
default=None, metadata=config(field_name="dayOfMonth")
|
|
493
|
+
)
|
|
494
|
+
recipients: Optional[List[str]] = field(
|
|
495
|
+
default=None, metadata=config(field_name="recipients")
|
|
496
|
+
)
|
|
497
|
+
red_ql_query: Optional[str] = field(
|
|
498
|
+
default=None, metadata=config(field_name="redQLQuery")
|
|
499
|
+
)
|
|
500
|
+
generate_csv_export: Optional[bool] = field(
|
|
501
|
+
default=None, metadata=config(field_name="generateCSVExport")
|
|
502
|
+
)
|
|
503
|
+
run_at: Optional[str] = field(default=None, metadata=config(field_name="runAt"))
|
|
504
|
+
share_with_admin_group: Optional[bool] = field(
|
|
505
|
+
default=None, metadata=config(field_name="shareWithAdminGroup")
|
|
506
|
+
)
|
|
507
|
+
locale: Optional[str] = field(default=None, metadata=config(field_name="locale"))
|
|
508
|
+
chart_type: Optional[ReportChartType] = field(
|
|
509
|
+
default=None, metadata=config(field_name="chartType")
|
|
510
|
+
)
|
|
511
|
+
cadence: Optional[Cadence] = field(
|
|
512
|
+
default=None, metadata=config(field_name="cadence")
|
|
513
|
+
)
|
|
514
|
+
export_types: Optional[List[ExportType]] = field(
|
|
515
|
+
default=None, metadata=config(field_name="exportTypes")
|
|
516
|
+
)
|
|
517
|
+
|
|
518
|
+
|
|
516
519
|
@dataclass_json
|
|
517
520
|
@dataclass(order=True, eq=True, frozen=True)
|
|
518
521
|
class NewScheduleInput:
|
|
@@ -558,6 +561,9 @@ class NewScheduleInput:
|
|
|
558
561
|
cadence: Optional[Cadence] = field(
|
|
559
562
|
default=None, metadata=config(field_name="cadence")
|
|
560
563
|
)
|
|
564
|
+
export_types: Optional[List[ExportType]] = field(
|
|
565
|
+
default=None, metadata=config(field_name="exportTypes")
|
|
566
|
+
)
|
|
561
567
|
visualizations: Optional[List[VisualizationInput]] = field(
|
|
562
568
|
default=None, metadata=config(field_name="visualizations")
|
|
563
569
|
)
|
|
@@ -620,6 +626,9 @@ class Schedule:
|
|
|
620
626
|
creator: Optional[TDRUser] = field(
|
|
621
627
|
default=None, metadata=config(field_name="creator")
|
|
622
628
|
)
|
|
629
|
+
export_types: Optional[List[ExportType]] = field(
|
|
630
|
+
default=None, metadata=config(field_name="exportTypes")
|
|
631
|
+
)
|
|
623
632
|
visualizations: Optional[List[Visualization]] = field(
|
|
624
633
|
default=None, metadata=config(field_name="visualizations")
|
|
625
634
|
)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
""""FastIoc Service."""
|
|
2
|
+
from taegis_sdk_python.service_core import ServiceCore
|
|
3
|
+
from taegis_sdk_python.services.fast_ioc.mutations import TaegisSDKFastIocMutation
|
|
4
|
+
from taegis_sdk_python.services.fast_ioc.queries import TaegisSDKFastIocQuery
|
|
5
|
+
from taegis_sdk_python.services.fast_ioc.subscriptions import (
|
|
6
|
+
TaegisSDKFastIocSubscription,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class FastIocService(ServiceCore):
|
|
11
|
+
"""Taegis FastIoc Service."""
|
|
12
|
+
|
|
13
|
+
@property
|
|
14
|
+
def query(self):
|
|
15
|
+
if not self._queries:
|
|
16
|
+
self._queries = TaegisSDKFastIocQuery(self)
|
|
17
|
+
return self._queries
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def mutation(self):
|
|
21
|
+
if not self._mutations:
|
|
22
|
+
self._mutations = TaegisSDKFastIocMutation(self)
|
|
23
|
+
return self._mutations
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def subscription(self):
|
|
27
|
+
if not self._subscriptions:
|
|
28
|
+
self._subscriptions = TaegisSDKFastIocSubscription(self)
|
|
29
|
+
return self._subscriptions
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""FastIoc Mutation."""
|
|
2
|
+
# pylint: disable=no-member, unused-argument, too-many-locals, duplicate-code, wildcard-import, unused-wildcard-import, cyclic-import
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# Autogenerated
|
|
6
|
+
# DO NOT MODIFY
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
|
|
12
|
+
|
|
13
|
+
from taegis_sdk_python import GraphQLNoRowsInResultSetError
|
|
14
|
+
from taegis_sdk_python.utils import (
|
|
15
|
+
build_output_string,
|
|
16
|
+
parse_union_result,
|
|
17
|
+
prepare_input,
|
|
18
|
+
)
|
|
19
|
+
from taegis_sdk_python.services.fast_ioc.types import *
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
22
|
+
from taegis_sdk_python.services.fast_ioc import FastIocService
|
|
23
|
+
|
|
24
|
+
log = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class TaegisSDKFastIocMutation:
|
|
28
|
+
"""Teagis Fast_ioc Mutation operations."""
|
|
29
|
+
|
|
30
|
+
def __init__(self, service: FastIocService):
|
|
31
|
+
self.service = service
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""FastIoc Query."""
|
|
2
|
+
# pylint: disable=no-member, unused-argument, too-many-locals, duplicate-code, wildcard-import, unused-wildcard-import, cyclic-import
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# Autogenerated
|
|
6
|
+
# DO NOT MODIFY
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
|
|
12
|
+
|
|
13
|
+
from taegis_sdk_python import GraphQLNoRowsInResultSetError
|
|
14
|
+
from taegis_sdk_python.utils import (
|
|
15
|
+
build_output_string,
|
|
16
|
+
parse_union_result,
|
|
17
|
+
prepare_input,
|
|
18
|
+
)
|
|
19
|
+
from taegis_sdk_python.services.fast_ioc.types import *
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
22
|
+
from taegis_sdk_python.services.fast_ioc import FastIocService
|
|
23
|
+
|
|
24
|
+
log = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class TaegisSDKFastIocQuery:
|
|
28
|
+
"""Teagis Fast_ioc Query operations."""
|
|
29
|
+
|
|
30
|
+
def __init__(self, service: FastIocService):
|
|
31
|
+
self.service = service
|
|
32
|
+
|
|
33
|
+
def event_window(self, arguments: EventAggregationArguments) -> EventWindow:
|
|
34
|
+
"""Return the earliest and latest timestamps found for events within provided time range."""
|
|
35
|
+
endpoint = "eventWindow"
|
|
36
|
+
|
|
37
|
+
result = self.service.execute_query(
|
|
38
|
+
endpoint=endpoint,
|
|
39
|
+
variables={
|
|
40
|
+
"arguments": prepare_input(arguments),
|
|
41
|
+
},
|
|
42
|
+
output=build_output_string(EventWindow),
|
|
43
|
+
)
|
|
44
|
+
if result.get(endpoint) is not None:
|
|
45
|
+
return EventWindow.from_dict(result.get(endpoint))
|
|
46
|
+
raise GraphQLNoRowsInResultSetError("for query eventWindow")
|
|
47
|
+
|
|
48
|
+
def event_count_by_logical_type(
|
|
49
|
+
self, arguments: EventAggregationArguments
|
|
50
|
+
) -> EventCountResult:
|
|
51
|
+
"""Generate a breakdown (histogram) of the aggregated count of events
|
|
52
|
+
that match the given constraints. The result rows are broken down per eventType and per day..
|
|
53
|
+
"""
|
|
54
|
+
endpoint = "eventCountByLogicalType"
|
|
55
|
+
|
|
56
|
+
result = self.service.execute_query(
|
|
57
|
+
endpoint=endpoint,
|
|
58
|
+
variables={
|
|
59
|
+
"arguments": prepare_input(arguments),
|
|
60
|
+
},
|
|
61
|
+
output=build_output_string(EventCountResult),
|
|
62
|
+
)
|
|
63
|
+
if result.get(endpoint) is not None:
|
|
64
|
+
return EventCountResult.from_dict(result.get(endpoint))
|
|
65
|
+
raise GraphQLNoRowsInResultSetError("for query eventCountByLogicalType")
|
|
66
|
+
|
|
67
|
+
def event_count_page(
|
|
68
|
+
self,
|
|
69
|
+
next_token: str,
|
|
70
|
+
session_key: Optional[str] = None,
|
|
71
|
+
limit: Optional[int] = None,
|
|
72
|
+
) -> EventCountResult:
|
|
73
|
+
"""Returns next page of results for eventCountByLogicalType if available.
|
|
74
|
+
If sessionKey not provided will fallback to auth header (single tenant search only)..
|
|
75
|
+
"""
|
|
76
|
+
endpoint = "eventCountPage"
|
|
77
|
+
|
|
78
|
+
result = self.service.execute_query(
|
|
79
|
+
endpoint=endpoint,
|
|
80
|
+
variables={
|
|
81
|
+
"nextToken": prepare_input(next_token),
|
|
82
|
+
"sessionKey": prepare_input(session_key),
|
|
83
|
+
"limit": prepare_input(limit),
|
|
84
|
+
},
|
|
85
|
+
output=build_output_string(EventCountResult),
|
|
86
|
+
)
|
|
87
|
+
if result.get(endpoint) is not None:
|
|
88
|
+
return EventCountResult.from_dict(result.get(endpoint))
|
|
89
|
+
raise GraphQLNoRowsInResultSetError("for query eventCountPage")
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""FastIoc Subscription."""
|
|
2
|
+
# pylint: disable=no-member, unused-argument, too-many-locals, duplicate-code, wildcard-import, unused-wildcard-import, cyclic-import
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# Autogenerated
|
|
6
|
+
# DO NOT MODIFY
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
|
|
12
|
+
|
|
13
|
+
from taegis_sdk_python import GraphQLNoRowsInResultSetError
|
|
14
|
+
from taegis_sdk_python.utils import (
|
|
15
|
+
build_output_string,
|
|
16
|
+
parse_union_result,
|
|
17
|
+
prepare_input,
|
|
18
|
+
)
|
|
19
|
+
from taegis_sdk_python.services.fast_ioc.types import *
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
22
|
+
from taegis_sdk_python.services.fast_ioc import FastIocService
|
|
23
|
+
|
|
24
|
+
log = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class TaegisSDKFastIocSubscription:
|
|
28
|
+
"""Teagis Fast_ioc Subscription operations."""
|
|
29
|
+
|
|
30
|
+
def __init__(self, service: FastIocService):
|
|
31
|
+
self.service = service
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"""FastIoc Types and Enums."""
|
|
2
|
+
# pylint: disable=no-member, unused-argument, too-many-locals, duplicate-code
|
|
3
|
+
|
|
4
|
+
# Autogenerated
|
|
5
|
+
# DO NOT MODIFY
|
|
6
|
+
|
|
7
|
+
from typing import Optional, List, Dict, Union, Any, Tuple
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
from dataclasses import dataclass, field
|
|
11
|
+
from dataclasses_json import dataclass_json, config
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass_json
|
|
15
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
16
|
+
class EventWindow:
|
|
17
|
+
"""EventWindow."""
|
|
18
|
+
|
|
19
|
+
earliest_event: Optional[str] = field(
|
|
20
|
+
default=None, metadata=config(field_name="earliestEvent")
|
|
21
|
+
)
|
|
22
|
+
latest_event: Optional[str] = field(
|
|
23
|
+
default=None, metadata=config(field_name="latestEvent")
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@dataclass_json
|
|
28
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
29
|
+
class TenantCount:
|
|
30
|
+
"""TenantCount."""
|
|
31
|
+
|
|
32
|
+
tenant_id: Optional[str] = field(
|
|
33
|
+
default=None, metadata=config(field_name="tenantId")
|
|
34
|
+
)
|
|
35
|
+
count: Optional[int] = field(default=None, metadata=config(field_name="count"))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@dataclass_json
|
|
39
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
40
|
+
class LogicalTypeFilter:
|
|
41
|
+
"""LogicalTypeFilter."""
|
|
42
|
+
|
|
43
|
+
logical_type: Optional[str] = field(
|
|
44
|
+
default=None, metadata=config(field_name="logicalType")
|
|
45
|
+
)
|
|
46
|
+
values: Optional[List[str]] = field(
|
|
47
|
+
default=None, metadata=config(field_name="values")
|
|
48
|
+
)
|
|
49
|
+
operator: Optional[str] = field(
|
|
50
|
+
default=None, metadata=config(field_name="operator")
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@dataclass_json
|
|
55
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
56
|
+
class TenantsInput:
|
|
57
|
+
"""TenantsInput."""
|
|
58
|
+
|
|
59
|
+
tenant_ids: Optional[List[str]] = field(
|
|
60
|
+
default=None, metadata=config(field_name="tenantIds")
|
|
61
|
+
)
|
|
62
|
+
session_key: Optional[str] = field(
|
|
63
|
+
default=None, metadata=config(field_name="sessionKey")
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@dataclass_json
|
|
68
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
69
|
+
class EventCountByLogicalType:
|
|
70
|
+
"""EventCountByLogicalType."""
|
|
71
|
+
|
|
72
|
+
matching_value: Optional[str] = field(
|
|
73
|
+
default=None, metadata=config(field_name="matchingValue")
|
|
74
|
+
)
|
|
75
|
+
event_type: Optional[str] = field(
|
|
76
|
+
default=None, metadata=config(field_name="eventType")
|
|
77
|
+
)
|
|
78
|
+
date: Optional[str] = field(default=None, metadata=config(field_name="date"))
|
|
79
|
+
count: Optional[int] = field(default=None, metadata=config(field_name="count"))
|
|
80
|
+
counts_by_tenant: Optional[List[TenantCount]] = field(
|
|
81
|
+
default=None, metadata=config(field_name="countsByTenant")
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@dataclass_json
|
|
86
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
87
|
+
class EventCountResult:
|
|
88
|
+
"""EventCountResult."""
|
|
89
|
+
|
|
90
|
+
next: Optional[str] = field(default=None, metadata=config(field_name="next"))
|
|
91
|
+
results: Optional[List[EventCountByLogicalType]] = field(
|
|
92
|
+
default=None, metadata=config(field_name="results")
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
@dataclass_json
|
|
97
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
98
|
+
class EventAggregationArguments:
|
|
99
|
+
"""EventAggregationArguments."""
|
|
100
|
+
|
|
101
|
+
event_type_filter: Optional[List[str]] = field(
|
|
102
|
+
default=None, metadata=config(field_name="eventTypeFilter")
|
|
103
|
+
)
|
|
104
|
+
earliest: Optional[str] = field(
|
|
105
|
+
default=None, metadata=config(field_name="earliest")
|
|
106
|
+
)
|
|
107
|
+
latest: Optional[str] = field(default=None, metadata=config(field_name="latest"))
|
|
108
|
+
limit: Optional[int] = field(default=None, metadata=config(field_name="limit"))
|
|
109
|
+
logical_type_filter: Optional[LogicalTypeFilter] = field(
|
|
110
|
+
default=None, metadata=config(field_name="logicalTypeFilter")
|
|
111
|
+
)
|
|
112
|
+
tenants_context: Optional[TenantsInput] = field(
|
|
113
|
+
default=None, metadata=config(field_name="tenantsContext")
|
|
114
|
+
)
|