taegis-sdk-python 1.0.0a8__tar.gz → 1.0.0a10__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.0a8/taegis_sdk_python.egg-info → taegis-sdk-python-1.0.0a10}/PKG-INFO +1 -1
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/_version.py +1 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/authentication.py +5 -2
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/service_core.py +9 -5
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/__init__.py +18 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets2/types.py +28 -3
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/audits/types.py +12 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/detector_registry/__init__.py +33 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/detector_registry/mutations.py +29 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/detector_registry/queries.py +91 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/detector_registry/subscriptions.py +29 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/detector_registry/types.py +89 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations2/mutations.py +23 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations2/queries.py +17 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations2/types.py +70 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/preferences/__init__.py +31 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/preferences/mutations.py +159 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/preferences/queries.py +168 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/preferences/subscriptions.py +29 -0
- taegis-sdk-python-1.0.0a10/taegis_sdk_python/services/preferences/types.py +372 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10/taegis_sdk_python.egg-info}/PKG-INFO +1 -1
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python.egg-info/SOURCES.txt +10 -0
- taegis-sdk-python-1.0.0a8/taegis_sdk_python/_version.py +0 -1
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/LICENSE +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/MANIFEST.in +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/README.md +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/requirements-dev.txt +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/requirements-test.txt +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/requirements.txt +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/setup.cfg +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/setup.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/_consts.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/config.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/errors.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/access_points/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/access_points/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/access_points/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/access_points/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/agent/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/agent/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/agent/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/agent/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/alerts/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/alerts/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/alerts/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/alerts/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets2/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets2/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets2/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/audits/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/audits/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/audits/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/clients/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/clients/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/clients/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/clients/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/collector/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/collector/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/collector/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/collector/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/comments/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/comments/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/comments/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/comments/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/entity_profile/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/entity_profile/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/entity_profile/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/entity_profile/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/entity_profile/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/event_search/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/event_search/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/event_search/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/event_search/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/events/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/events/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/events/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/events/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/events/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/exports/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/exports/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/exports/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/exports/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notebooks/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notebooks/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notifications/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notifications/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notifications/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/notifications/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/rules/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/rules/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/rules/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/rules/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/sharelinks/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/tenants/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/tenants/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/tenants/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/tenants/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/threat/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/threat/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/threat/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/threat/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/trip/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/trip/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/trip/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/trip/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/users/__init__.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/users/mutations.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/users/queries.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/users/subscriptions.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/users/types.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/tokens.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/utils.py +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python.egg-info/dependency_links.txt +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python.egg-info/requires.txt +0 -0
- {taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v1.0.0-alpha10"
|
{taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/authentication.py
RENAMED
|
@@ -178,7 +178,9 @@ def get_token_by_oauth(
|
|
|
178
178
|
|
|
179
179
|
|
|
180
180
|
def get_token_by_password_grant(
|
|
181
|
-
request_url: str,
|
|
181
|
+
request_url: str,
|
|
182
|
+
username: str,
|
|
183
|
+
password: Optional[str] = None,
|
|
182
184
|
) -> str: # pragma: no cover
|
|
183
185
|
"""Get an access token by username/password with mfa.
|
|
184
186
|
|
|
@@ -201,7 +203,8 @@ def get_token_by_password_grant(
|
|
|
201
203
|
"""
|
|
202
204
|
auth_uri = "/auth/api/v2/auth/token"
|
|
203
205
|
|
|
204
|
-
|
|
206
|
+
if not password:
|
|
207
|
+
password = getpass("Password: ")
|
|
205
208
|
|
|
206
209
|
response = post(
|
|
207
210
|
f"{request_url}{auth_uri}",
|
|
@@ -78,16 +78,20 @@ class ServiceCore:
|
|
|
78
78
|
@property
|
|
79
79
|
def ws_client(self) -> Client:
|
|
80
80
|
"""GraphQL WebSockets Transport with Client."""
|
|
81
|
+
subprotocols = [
|
|
82
|
+
"graphql-ws",
|
|
83
|
+
f"access-token-{self.service.access_token}",
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
if self.service.tenant_id:
|
|
87
|
+
subprotocols.append(f"x-tenant-context-{self.service.tenant_id}")
|
|
88
|
+
|
|
81
89
|
transport = WebsocketsTransport(
|
|
82
90
|
f"{self.wss_url}{self.gateway}",
|
|
83
91
|
headers={
|
|
84
92
|
"User-Agent": f"taegis_sdk_python/{__version__}",
|
|
85
93
|
},
|
|
86
|
-
subprotocols=
|
|
87
|
-
"graphql-ws",
|
|
88
|
-
f"x-tenant-context-{self.service.tenant_id}",
|
|
89
|
-
f"access-token-{self.service.access_token}",
|
|
90
|
-
],
|
|
94
|
+
subprotocols=subprotocols,
|
|
91
95
|
connect_args={"max_size": None},
|
|
92
96
|
)
|
|
93
97
|
client = Client(transport=transport, fetch_schema_from_transport=True)
|
{taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/__init__.py
RENAMED
|
@@ -17,6 +17,7 @@ from taegis_sdk_python.services.audits import AuditsService
|
|
|
17
17
|
from taegis_sdk_python.services.clients import ClientsService
|
|
18
18
|
from taegis_sdk_python.services.collector import CollectorService
|
|
19
19
|
from taegis_sdk_python.services.comments import CommentsService
|
|
20
|
+
from taegis_sdk_python.services.detector_registry import DetectorRegistryService
|
|
20
21
|
from taegis_sdk_python.services.endpoint_command_manager import (
|
|
21
22
|
EndpointCommandManagerService,
|
|
22
23
|
)
|
|
@@ -32,6 +33,7 @@ from taegis_sdk_python.services.investigations2 import Investigations2Service
|
|
|
32
33
|
from taegis_sdk_python.services.mitre_attack_info import MitreAttackInfoService
|
|
33
34
|
from taegis_sdk_python.services.notebooks import NotebooksService
|
|
34
35
|
from taegis_sdk_python.services.notifications import NotificationsService
|
|
36
|
+
from taegis_sdk_python.services.preferences import PreferencesService
|
|
35
37
|
from taegis_sdk_python.services.rules import RulesService
|
|
36
38
|
from taegis_sdk_python.services.sharelinks import SharelinksService
|
|
37
39
|
from taegis_sdk_python.services.tenants import TenantsService
|
|
@@ -91,6 +93,7 @@ class GraphQLService:
|
|
|
91
93
|
self._clients = None
|
|
92
94
|
self._collector = None
|
|
93
95
|
self._comments = None
|
|
96
|
+
self._detector_registry = None
|
|
94
97
|
self._endpoint_command_manager = None
|
|
95
98
|
self._endpoint_management_service = None
|
|
96
99
|
self._entity_profile = None
|
|
@@ -102,6 +105,7 @@ class GraphQLService:
|
|
|
102
105
|
self._mitre_attack_info = None
|
|
103
106
|
self._notebooks = None
|
|
104
107
|
self._notifications = None
|
|
108
|
+
self._preferences = None
|
|
105
109
|
self._rules = None
|
|
106
110
|
self._core = None
|
|
107
111
|
self._sharelinks = None
|
|
@@ -242,6 +246,13 @@ class GraphQLService:
|
|
|
242
246
|
self._comments = CommentsService(self)
|
|
243
247
|
return self._comments
|
|
244
248
|
|
|
249
|
+
@property
|
|
250
|
+
def detector_registry(self):
|
|
251
|
+
"""Detector Registry Service Endpoint."""
|
|
252
|
+
if not self._detector_registry:
|
|
253
|
+
self._detector_registry = DetectorRegistryService(self)
|
|
254
|
+
return self._detector_registry
|
|
255
|
+
|
|
245
256
|
@property
|
|
246
257
|
def endpoint_command_manager(self):
|
|
247
258
|
"""Endpoint Command Manager Service Endpoint."""
|
|
@@ -319,6 +330,13 @@ class GraphQLService:
|
|
|
319
330
|
self._notifications = NotificationsService(self)
|
|
320
331
|
return self._notifications
|
|
321
332
|
|
|
333
|
+
@property
|
|
334
|
+
def preferences(self):
|
|
335
|
+
"""Preferences Service Endpoint."""
|
|
336
|
+
if not self._preferences:
|
|
337
|
+
self._preferences = PreferencesService(self)
|
|
338
|
+
return self._preferences
|
|
339
|
+
|
|
322
340
|
@property
|
|
323
341
|
def rules(self):
|
|
324
342
|
"""Rules Service Endpoint."""
|
{taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/assets2/types.py
RENAMED
|
@@ -62,6 +62,8 @@ class AssetSearchOrderByInputV2(str, Enum):
|
|
|
62
62
|
CONNECTION_STATUS_DESC = "connection_status_desc"
|
|
63
63
|
ISOLATION_STATUS_ASC = "isolation_status_asc"
|
|
64
64
|
ISOLATION_STATUS_DESC = "isolation_status_desc"
|
|
65
|
+
DESIRED_ISOLATION_STATUS_ASC = "desired_isolation_status_asc"
|
|
66
|
+
DESIRED_ISOLATION_STATUS_DESC = "desired_isolation_status_desc"
|
|
65
67
|
IP_ADDRESS_ASC = "ip_address_asc"
|
|
66
68
|
IP_ADDRESS_DESC = "ip_address_desc"
|
|
67
69
|
ENDPOINT_TYPE_ASC = "endpoint_type_asc"
|
|
@@ -82,6 +84,13 @@ class AssetSearchOrderByInputV2(str, Enum):
|
|
|
82
84
|
TAG_DESC = "tag_desc"
|
|
83
85
|
|
|
84
86
|
|
|
87
|
+
class InvestigationsOrderByInput(str, Enum):
|
|
88
|
+
"""InvestigationsOrderByInput."""
|
|
89
|
+
|
|
90
|
+
CREATED_AT_ASC = "created_at_asc"
|
|
91
|
+
CREATED_AT_DESC = "created_at_desc"
|
|
92
|
+
|
|
93
|
+
|
|
85
94
|
class CanIsolateResponse(str, Enum):
|
|
86
95
|
"""CanIsolateResponse."""
|
|
87
96
|
|
|
@@ -199,10 +208,20 @@ class TagV2:
|
|
|
199
208
|
|
|
200
209
|
@dataclass_json
|
|
201
210
|
@dataclass(order=True, eq=True, frozen=True)
|
|
202
|
-
class
|
|
203
|
-
"""
|
|
211
|
+
class AssetInvestigation:
|
|
212
|
+
"""AssetInvestigation."""
|
|
204
213
|
|
|
205
214
|
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
215
|
+
investigation_id: Optional[str] = field(
|
|
216
|
+
default=None, metadata=config(field_name="investigationId")
|
|
217
|
+
)
|
|
218
|
+
created_at: Optional[str] = field(
|
|
219
|
+
default=None, metadata=config(field_name="createdAt")
|
|
220
|
+
)
|
|
221
|
+
updated_at: Optional[str] = field(
|
|
222
|
+
default=None, metadata=config(field_name="updatedAt")
|
|
223
|
+
)
|
|
224
|
+
host_id: Optional[str] = field(default=None, metadata=config(field_name="hostId"))
|
|
206
225
|
|
|
207
226
|
|
|
208
227
|
@dataclass_json
|
|
@@ -397,6 +416,9 @@ class AssetWhereInputV2:
|
|
|
397
416
|
created_at_gte: Optional[str] = field(
|
|
398
417
|
default=None, metadata=config(field_name="createdAt_gte")
|
|
399
418
|
)
|
|
419
|
+
desired_isolation_status: Optional[str] = field(
|
|
420
|
+
default=None, metadata=config(field_name="desiredIsolationStatus")
|
|
421
|
+
)
|
|
400
422
|
group_name: Optional[str] = field(
|
|
401
423
|
default=None, metadata=config(field_name="groupName")
|
|
402
424
|
)
|
|
@@ -585,6 +607,9 @@ class AssetV2:
|
|
|
585
607
|
isolation_status: Optional[str] = field(
|
|
586
608
|
default=None, metadata=config(field_name="isolationStatus")
|
|
587
609
|
)
|
|
610
|
+
desired_isolation_status: Optional[str] = field(
|
|
611
|
+
default=None, metadata=config(field_name="desiredIsolationStatus")
|
|
612
|
+
)
|
|
588
613
|
model: Optional[str] = field(default=None, metadata=config(field_name="model"))
|
|
589
614
|
cloud_provider_name: Optional[str] = field(
|
|
590
615
|
default=None, metadata=config(field_name="cloudProviderName")
|
|
@@ -611,7 +636,7 @@ class AssetV2:
|
|
|
611
636
|
endpoint_group: Optional[EndpointGroupV2] = field(
|
|
612
637
|
default=None, metadata=config(field_name="endpointGroup")
|
|
613
638
|
)
|
|
614
|
-
investigations: Optional[List[
|
|
639
|
+
investigations: Optional[List[AssetInvestigation]] = field(
|
|
615
640
|
default=None, metadata=config(field_name="investigations")
|
|
616
641
|
)
|
|
617
642
|
|
{taegis-sdk-python-1.0.0a8 → taegis-sdk-python-1.0.0a10}/taegis_sdk_python/services/audits/types.py
RENAMED
|
@@ -198,6 +198,12 @@ class AuditEventResult:
|
|
|
198
198
|
class AllAuditsInput:
|
|
199
199
|
"""AllAuditsInput."""
|
|
200
200
|
|
|
201
|
+
tenant_ids: Optional[List[str]] = field(
|
|
202
|
+
default=None, metadata=config(field_name="tenantIDs")
|
|
203
|
+
)
|
|
204
|
+
session_id: Optional[str] = field(
|
|
205
|
+
default=None, metadata=config(field_name="sessionID")
|
|
206
|
+
)
|
|
201
207
|
offset: Optional[int] = field(default=None, metadata=config(field_name="offset"))
|
|
202
208
|
limit: Optional[int] = field(default=None, metadata=config(field_name="limit"))
|
|
203
209
|
before: Optional[str] = field(default=None, metadata=config(field_name="before"))
|
|
@@ -215,6 +221,12 @@ class AllAuditsInput:
|
|
|
215
221
|
class AuditSearchInput:
|
|
216
222
|
"""AuditSearchInput."""
|
|
217
223
|
|
|
224
|
+
tenant_ids: Optional[List[str]] = field(
|
|
225
|
+
default=None, metadata=config(field_name="tenantIDs")
|
|
226
|
+
)
|
|
227
|
+
session_id: Optional[str] = field(
|
|
228
|
+
default=None, metadata=config(field_name="sessionID")
|
|
229
|
+
)
|
|
218
230
|
offset: Optional[int] = field(default=None, metadata=config(field_name="offset"))
|
|
219
231
|
limit: Optional[int] = field(default=None, metadata=config(field_name="limit"))
|
|
220
232
|
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
""""DetectorRegistry Service."""
|
|
2
|
+
from taegis_sdk_python.service_core import ServiceCore
|
|
3
|
+
from taegis_sdk_python.services.detector_registry.mutations import (
|
|
4
|
+
TaegisSDKDetectorRegistryMutation,
|
|
5
|
+
)
|
|
6
|
+
from taegis_sdk_python.services.detector_registry.queries import (
|
|
7
|
+
TaegisSDKDetectorRegistryQuery,
|
|
8
|
+
)
|
|
9
|
+
from taegis_sdk_python.services.detector_registry.subscriptions import (
|
|
10
|
+
TaegisSDKDetectorRegistrySubscription,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class DetectorRegistryService(ServiceCore):
|
|
15
|
+
"""Taegis DetectorRegistry Service."""
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def query(self):
|
|
19
|
+
if not self._queries:
|
|
20
|
+
self._queries = TaegisSDKDetectorRegistryQuery(self)
|
|
21
|
+
return self._queries
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def mutation(self):
|
|
25
|
+
if not self._mutations:
|
|
26
|
+
self._mutations = TaegisSDKDetectorRegistryMutation(self)
|
|
27
|
+
return self._mutations
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def subscription(self):
|
|
31
|
+
if not self._subscriptions:
|
|
32
|
+
self._subscriptions = TaegisSDKDetectorRegistrySubscription(self)
|
|
33
|
+
return self._subscriptions
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""DetectorRegistry 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
|
+
from typing import TYPE_CHECKING, Any, List, Dict, Optional, Tuple, Union
|
|
11
|
+
|
|
12
|
+
from taegis_sdk_python.utils import (
|
|
13
|
+
build_output_string,
|
|
14
|
+
prepare_input,
|
|
15
|
+
parse_union_result,
|
|
16
|
+
)
|
|
17
|
+
from taegis_sdk_python.services.detector_registry.types import *
|
|
18
|
+
|
|
19
|
+
from taegis_sdk_python import GraphQLNoRowsInResultSetError
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
22
|
+
from taegis_sdk_python.services.detector_registry import DetectorRegistryService
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TaegisSDKDetectorRegistryMutation:
|
|
26
|
+
"""Teagis Detector_registry Mutation operations."""
|
|
27
|
+
|
|
28
|
+
def __init__(self, service: DetectorRegistryService):
|
|
29
|
+
self.service = service
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"""DetectorRegistry 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
|
+
from typing import TYPE_CHECKING, Any, List, Dict, Optional, Tuple, Union
|
|
11
|
+
|
|
12
|
+
from taegis_sdk_python.utils import (
|
|
13
|
+
build_output_string,
|
|
14
|
+
prepare_input,
|
|
15
|
+
parse_union_result,
|
|
16
|
+
)
|
|
17
|
+
from taegis_sdk_python.services.detector_registry.types import *
|
|
18
|
+
|
|
19
|
+
from taegis_sdk_python import GraphQLNoRowsInResultSetError
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
22
|
+
from taegis_sdk_python.services.detector_registry import DetectorRegistryService
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TaegisSDKDetectorRegistryQuery:
|
|
26
|
+
"""Teagis Detector_registry Query operations."""
|
|
27
|
+
|
|
28
|
+
def __init__(self, service: DetectorRegistryService):
|
|
29
|
+
self.service = service
|
|
30
|
+
|
|
31
|
+
def detector(self, id_: str) -> RegisteredDetector:
|
|
32
|
+
"""returns registered detector by ID."""
|
|
33
|
+
endpoint = "detector"
|
|
34
|
+
|
|
35
|
+
result = self.service.execute_query(
|
|
36
|
+
endpoint=endpoint,
|
|
37
|
+
variables={
|
|
38
|
+
"id": prepare_input(id_),
|
|
39
|
+
},
|
|
40
|
+
output=build_output_string(RegisteredDetector),
|
|
41
|
+
)
|
|
42
|
+
if result.get(endpoint) is not None:
|
|
43
|
+
return RegisteredDetector.from_dict(result.get(endpoint))
|
|
44
|
+
raise GraphQLNoRowsInResultSetError("for query detector")
|
|
45
|
+
|
|
46
|
+
def detectors(self) -> List[RegisteredDetector]:
|
|
47
|
+
"""returns all detectors."""
|
|
48
|
+
endpoint = "detectors"
|
|
49
|
+
|
|
50
|
+
result = self.service.execute_query(
|
|
51
|
+
endpoint=endpoint,
|
|
52
|
+
variables={},
|
|
53
|
+
output=build_output_string(RegisteredDetector),
|
|
54
|
+
)
|
|
55
|
+
if result.get(endpoint) is not None:
|
|
56
|
+
return RegisteredDetector.schema().load(
|
|
57
|
+
[r or {} for r in result.get(endpoint)], many=True
|
|
58
|
+
)
|
|
59
|
+
raise GraphQLNoRowsInResultSetError("for query detectors")
|
|
60
|
+
|
|
61
|
+
def search_detectors(self, input_: SearchDetectors) -> List[RegisteredDetector]:
|
|
62
|
+
"""searches detectors given the input criteria."""
|
|
63
|
+
endpoint = "searchDetectors"
|
|
64
|
+
|
|
65
|
+
result = self.service.execute_query(
|
|
66
|
+
endpoint=endpoint,
|
|
67
|
+
variables={
|
|
68
|
+
"input": prepare_input(input_),
|
|
69
|
+
},
|
|
70
|
+
output=build_output_string(RegisteredDetector),
|
|
71
|
+
)
|
|
72
|
+
if result.get(endpoint) is not None:
|
|
73
|
+
return RegisteredDetector.schema().load(
|
|
74
|
+
[r or {} for r in result.get(endpoint)], many=True
|
|
75
|
+
)
|
|
76
|
+
raise GraphQLNoRowsInResultSetError("for query searchDetectors")
|
|
77
|
+
|
|
78
|
+
def detector_by_name(self, display_name: str) -> List[str]:
|
|
79
|
+
"""returns ids that match the given registered detector name."""
|
|
80
|
+
endpoint = "detectorByName"
|
|
81
|
+
|
|
82
|
+
result = self.service.execute_query(
|
|
83
|
+
endpoint=endpoint,
|
|
84
|
+
variables={
|
|
85
|
+
"displayName": prepare_input(display_name),
|
|
86
|
+
},
|
|
87
|
+
output="",
|
|
88
|
+
)
|
|
89
|
+
if result.get(endpoint) is not None:
|
|
90
|
+
return result.get(endpoint)
|
|
91
|
+
raise GraphQLNoRowsInResultSetError("for query detectorByName")
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""DetectorRegistry 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
|
+
from typing import TYPE_CHECKING, Any, List, Dict, Optional, Tuple, Union
|
|
11
|
+
|
|
12
|
+
from taegis_sdk_python.utils import (
|
|
13
|
+
build_output_string,
|
|
14
|
+
prepare_input,
|
|
15
|
+
parse_union_result,
|
|
16
|
+
)
|
|
17
|
+
from taegis_sdk_python.services.detector_registry.types import *
|
|
18
|
+
|
|
19
|
+
from taegis_sdk_python import GraphQLNoRowsInResultSetError
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
22
|
+
from taegis_sdk_python.services.detector_registry import DetectorRegistryService
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TaegisSDKDetectorRegistrySubscription:
|
|
26
|
+
"""Teagis Detector_registry Subscription operations."""
|
|
27
|
+
|
|
28
|
+
def __init__(self, service: DetectorRegistryService):
|
|
29
|
+
self.service = service
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""DetectorRegistry 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 enum import Enum
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
from dataclasses import dataclass, field
|
|
14
|
+
from dataclasses_json import dataclass_json, config
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class State(str, Enum):
|
|
18
|
+
"""State."""
|
|
19
|
+
|
|
20
|
+
DEPLOYED = "deployed"
|
|
21
|
+
RESEARCH = "research"
|
|
22
|
+
DISABLED = "disabled"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@dataclass_json
|
|
26
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
27
|
+
class SearchDetectors:
|
|
28
|
+
"""SearchDetectors."""
|
|
29
|
+
|
|
30
|
+
ids: Optional[List[str]] = field(default=None, metadata=config(field_name="ids"))
|
|
31
|
+
creator_names: Optional[List[str]] = field(
|
|
32
|
+
default=None, metadata=config(field_name="creatorNames")
|
|
33
|
+
)
|
|
34
|
+
display_names: Optional[List[str]] = field(
|
|
35
|
+
default=None, metadata=config(field_name="displayNames")
|
|
36
|
+
)
|
|
37
|
+
tags: Optional[List[str]] = field(default=None, metadata=config(field_name="tags"))
|
|
38
|
+
maintainers: Optional[List[str]] = field(
|
|
39
|
+
default=None, metadata=config(field_name="maintainers")
|
|
40
|
+
)
|
|
41
|
+
archived: Optional[bool] = field(
|
|
42
|
+
default=None, metadata=config(field_name="archived")
|
|
43
|
+
)
|
|
44
|
+
alerting_rule: Optional[bool] = field(
|
|
45
|
+
default=None, metadata=config(field_name="alertingRule")
|
|
46
|
+
)
|
|
47
|
+
created_on_or_after: Optional[str] = field(
|
|
48
|
+
default=None, metadata=config(field_name="createdOnOrAfter")
|
|
49
|
+
)
|
|
50
|
+
created_before: Optional[str] = field(
|
|
51
|
+
default=None, metadata=config(field_name="createdBefore")
|
|
52
|
+
)
|
|
53
|
+
updated_on_or_after: Optional[str] = field(
|
|
54
|
+
default=None, metadata=config(field_name="updatedOnOrAfter")
|
|
55
|
+
)
|
|
56
|
+
updated_before: Optional[str] = field(
|
|
57
|
+
default=None, metadata=config(field_name="updatedBefore")
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@dataclass_json
|
|
62
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
63
|
+
class RegisteredDetector:
|
|
64
|
+
"""RegisteredDetector."""
|
|
65
|
+
|
|
66
|
+
id: Optional[str] = field(default=None, metadata=config(field_name="id"))
|
|
67
|
+
creator_name: Optional[str] = field(
|
|
68
|
+
default=None, metadata=config(field_name="creatorName")
|
|
69
|
+
)
|
|
70
|
+
display_name: Optional[str] = field(
|
|
71
|
+
default=None, metadata=config(field_name="displayName")
|
|
72
|
+
)
|
|
73
|
+
tags: Optional[List[str]] = field(default=None, metadata=config(field_name="tags"))
|
|
74
|
+
maintainers: Optional[List[str]] = field(
|
|
75
|
+
default=None, metadata=config(field_name="maintainers")
|
|
76
|
+
)
|
|
77
|
+
archived: Optional[bool] = field(
|
|
78
|
+
default=None, metadata=config(field_name="archived")
|
|
79
|
+
)
|
|
80
|
+
alerting_rule: Optional[bool] = field(
|
|
81
|
+
default=None, metadata=config(field_name="alertingRule")
|
|
82
|
+
)
|
|
83
|
+
created_at: Optional[str] = field(
|
|
84
|
+
default=None, metadata=config(field_name="createdAt")
|
|
85
|
+
)
|
|
86
|
+
updated_at: Optional[str] = field(
|
|
87
|
+
default=None, metadata=config(field_name="updatedAt")
|
|
88
|
+
)
|
|
89
|
+
state: Optional[State] = field(default=None, metadata=config(field_name="state"))
|
|
@@ -83,6 +83,29 @@ class TaegisSDKInvestigations2Mutation:
|
|
|
83
83
|
return AddEvidenceToInvestigationResult.from_dict(result.get(endpoint))
|
|
84
84
|
raise GraphQLNoRowsInResultSetError("for mutation addEvidenceToInvestigation")
|
|
85
85
|
|
|
86
|
+
def remove_evidence_from_investigation(
|
|
87
|
+
self, input_: RemoveEvidenceFromInvestigationInput
|
|
88
|
+
) -> RemoveEvidenceFromInvestigationResult:
|
|
89
|
+
"""Remove evidence from an existing investigation
|
|
90
|
+
|
|
91
|
+
This is a background job, it will be pretty quick, but removed alerts/events will likely still be present in the returned investigation
|
|
92
|
+
The processing status will reflect where the the investigation is at in the processing job.
|
|
93
|
+
"""
|
|
94
|
+
endpoint = "removeEvidenceFromInvestigation"
|
|
95
|
+
|
|
96
|
+
result = self.service.execute_mutation(
|
|
97
|
+
endpoint=endpoint,
|
|
98
|
+
variables={
|
|
99
|
+
"input": prepare_input(input_),
|
|
100
|
+
},
|
|
101
|
+
output=build_output_string(RemoveEvidenceFromInvestigationResult),
|
|
102
|
+
)
|
|
103
|
+
if result.get(endpoint) is not None:
|
|
104
|
+
return RemoveEvidenceFromInvestigationResult.from_dict(result.get(endpoint))
|
|
105
|
+
raise GraphQLNoRowsInResultSetError(
|
|
106
|
+
"for mutation removeEvidenceFromInvestigation"
|
|
107
|
+
)
|
|
108
|
+
|
|
86
109
|
def create_investigation_rule(
|
|
87
110
|
self, input_: CreateInvestigationRuleInput
|
|
88
111
|
) -> InvestigationRule:
|
|
@@ -43,6 +43,23 @@ class TaegisSDKInvestigations2Query:
|
|
|
43
43
|
return InvestigationV2.from_dict(result.get(endpoint))
|
|
44
44
|
raise GraphQLNoRowsInResultSetError("for query investigationV2")
|
|
45
45
|
|
|
46
|
+
def investigations_v2(
|
|
47
|
+
self, arguments: InvestigationsV2Arguments
|
|
48
|
+
) -> InvestigationsV2:
|
|
49
|
+
"""Search investigations."""
|
|
50
|
+
endpoint = "investigationsV2"
|
|
51
|
+
|
|
52
|
+
result = self.service.execute_query(
|
|
53
|
+
endpoint=endpoint,
|
|
54
|
+
variables={
|
|
55
|
+
"arguments": prepare_input(arguments),
|
|
56
|
+
},
|
|
57
|
+
output=build_output_string(InvestigationsV2),
|
|
58
|
+
)
|
|
59
|
+
if result.get(endpoint) is not None:
|
|
60
|
+
return InvestigationsV2.from_dict(result.get(endpoint))
|
|
61
|
+
raise GraphQLNoRowsInResultSetError("for query investigationsV2")
|
|
62
|
+
|
|
46
63
|
def investigation_rule(
|
|
47
64
|
self, arguments: InvestigationRuleArguments
|
|
48
65
|
) -> InvestigationRule:
|
|
@@ -125,6 +125,25 @@ class AddEvidenceToInvestigationInput:
|
|
|
125
125
|
)
|
|
126
126
|
|
|
127
127
|
|
|
128
|
+
@dataclass_json
|
|
129
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
130
|
+
class RemoveEvidenceFromInvestigationInput:
|
|
131
|
+
"""RemoveEvidenceFromInvestigationInput."""
|
|
132
|
+
|
|
133
|
+
investigation_id: Optional[str] = field(
|
|
134
|
+
default=None, metadata=config(field_name="investigationId")
|
|
135
|
+
)
|
|
136
|
+
alerts: Optional[List[str]] = field(
|
|
137
|
+
default=None, metadata=config(field_name="alerts")
|
|
138
|
+
)
|
|
139
|
+
events: Optional[List[str]] = field(
|
|
140
|
+
default=None, metadata=config(field_name="events")
|
|
141
|
+
)
|
|
142
|
+
assets: Optional[List[str]] = field(
|
|
143
|
+
default=None, metadata=config(field_name="assets")
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
|
|
128
147
|
@dataclass_json
|
|
129
148
|
@dataclass(order=True, eq=True, frozen=True)
|
|
130
149
|
class DeleteInvestigationRuleInput:
|
|
@@ -152,6 +171,25 @@ class AddEvidenceToInvestigationResult:
|
|
|
152
171
|
)
|
|
153
172
|
|
|
154
173
|
|
|
174
|
+
@dataclass_json
|
|
175
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
176
|
+
class RemoveEvidenceFromInvestigationResult:
|
|
177
|
+
"""RemoveEvidenceFromInvestigationResult."""
|
|
178
|
+
|
|
179
|
+
investigation_id: Optional[str] = field(
|
|
180
|
+
default=None, metadata=config(field_name="investigationId")
|
|
181
|
+
)
|
|
182
|
+
alerts: Optional[List[str]] = field(
|
|
183
|
+
default=None, metadata=config(field_name="alerts")
|
|
184
|
+
)
|
|
185
|
+
events: Optional[List[str]] = field(
|
|
186
|
+
default=None, metadata=config(field_name="events")
|
|
187
|
+
)
|
|
188
|
+
assets: Optional[List[str]] = field(
|
|
189
|
+
default=None, metadata=config(field_name="assets")
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
|
|
155
193
|
@dataclass_json
|
|
156
194
|
@dataclass(order=True, eq=True, frozen=True)
|
|
157
195
|
class CreateInvestigationTemplateInput:
|
|
@@ -466,6 +504,9 @@ class CreateInvestigationRuleInput:
|
|
|
466
504
|
template_id: Optional[str] = field(
|
|
467
505
|
default=None, metadata=config(field_name="templateId")
|
|
468
506
|
)
|
|
507
|
+
response_data: Optional[dict] = field(
|
|
508
|
+
default=None, metadata=config(field_name="responseData")
|
|
509
|
+
)
|
|
469
510
|
state: Optional[InvestigationRuleState] = field(
|
|
470
511
|
default=None, metadata=config(field_name="state")
|
|
471
512
|
)
|
|
@@ -514,11 +555,27 @@ class UpdateInvestigationRuleInput:
|
|
|
514
555
|
template_id: Optional[str] = field(
|
|
515
556
|
default=None, metadata=config(field_name="templateId")
|
|
516
557
|
)
|
|
558
|
+
response_data: Optional[dict] = field(
|
|
559
|
+
default=None, metadata=config(field_name="responseData")
|
|
560
|
+
)
|
|
517
561
|
state: Optional[InvestigationRuleState] = field(
|
|
518
562
|
default=None, metadata=config(field_name="state")
|
|
519
563
|
)
|
|
520
564
|
|
|
521
565
|
|
|
566
|
+
@dataclass_json
|
|
567
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
568
|
+
class InvestigationsV2Arguments:
|
|
569
|
+
"""InvestigationsV2Arguments."""
|
|
570
|
+
|
|
571
|
+
page: Optional[int] = field(default=None, metadata=config(field_name="page"))
|
|
572
|
+
per_page: Optional[int] = field(default=None, metadata=config(field_name="perPage"))
|
|
573
|
+
cql: Optional[str] = field(default=None, metadata=config(field_name="cql"))
|
|
574
|
+
order_by: Optional[PaginationOrder] = field(
|
|
575
|
+
default=None, metadata=config(field_name="orderBy")
|
|
576
|
+
)
|
|
577
|
+
|
|
578
|
+
|
|
522
579
|
@dataclass_json
|
|
523
580
|
@dataclass(order=True, eq=True, frozen=True)
|
|
524
581
|
class ExportInvestigationResourcesArgument:
|
|
@@ -971,6 +1028,19 @@ class InvestigationV2:
|
|
|
971
1028
|
)
|
|
972
1029
|
|
|
973
1030
|
|
|
1031
|
+
@dataclass_json
|
|
1032
|
+
@dataclass(order=True, eq=True, frozen=True)
|
|
1033
|
+
class InvestigationsV2:
|
|
1034
|
+
"""InvestigationsV2."""
|
|
1035
|
+
|
|
1036
|
+
total_count: Optional[int] = field(
|
|
1037
|
+
default=None, metadata=config(field_name="totalCount")
|
|
1038
|
+
)
|
|
1039
|
+
investigations: Optional[List[InvestigationV2]] = field(
|
|
1040
|
+
default=None, metadata=config(field_name="investigations")
|
|
1041
|
+
)
|
|
1042
|
+
|
|
1043
|
+
|
|
974
1044
|
@dataclass_json
|
|
975
1045
|
@dataclass(order=True, eq=True, frozen=True)
|
|
976
1046
|
class InvestigationTemplates:
|