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.
Files changed (180) hide show
  1. {taegis-sdk-python-1.0.1/taegis_sdk_python.egg-info → taegis-sdk-python-1.0.2}/PKG-INFO +1 -1
  2. taegis-sdk-python-1.0.2/taegis_sdk_python/_version.py +1 -0
  3. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/service_core.py +16 -20
  4. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/__init__.py +9 -0
  5. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/types.py +24 -0
  6. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/types.py +48 -39
  7. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/__init__.py +29 -0
  8. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/mutations.py +31 -0
  9. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/queries.py +89 -0
  10. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/subscriptions.py +31 -0
  11. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/types.py +114 -0
  12. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/types.py +52 -21
  13. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/utils.py +47 -0
  14. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2/taegis_sdk_python.egg-info}/PKG-INFO +1 -1
  15. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/SOURCES.txt +5 -0
  16. taegis-sdk-python-1.0.1/taegis_sdk_python/_version.py +0 -1
  17. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/LICENSE +0 -0
  18. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/MANIFEST.in +0 -0
  19. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/README.md +0 -0
  20. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/requirements-dev.txt +0 -0
  21. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/requirements-test.txt +0 -0
  22. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/requirements.txt +0 -0
  23. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/setup.cfg +0 -0
  24. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/setup.py +0 -0
  25. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/__init__.py +0 -0
  26. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/_consts.py +0 -0
  27. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/authentication.py +0 -0
  28. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/config.py +0 -0
  29. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/errors.py +0 -0
  30. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/__init__.py +0 -0
  31. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/mutations.py +0 -0
  32. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/queries.py +0 -0
  33. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
  34. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/types.py +0 -0
  35. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/__init__.py +0 -0
  36. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/mutations.py +0 -0
  37. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/queries.py +0 -0
  38. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
  39. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/types.py +0 -0
  40. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/__init__.py +0 -0
  41. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/mutations.py +0 -0
  42. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/queries.py +0 -0
  43. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
  44. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/types.py +0 -0
  45. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/__init__.py +0 -0
  46. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/mutations.py +0 -0
  47. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/queries.py +0 -0
  48. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
  49. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/types.py +0 -0
  50. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/__init__.py +0 -0
  51. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/mutations.py +0 -0
  52. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/queries.py +0 -0
  53. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
  54. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/__init__.py +0 -0
  55. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/mutations.py +0 -0
  56. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/queries.py +0 -0
  57. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
  58. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/types.py +0 -0
  59. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/__init__.py +0 -0
  60. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/mutations.py +0 -0
  61. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/queries.py +0 -0
  62. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
  63. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/types.py +0 -0
  64. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/__init__.py +0 -0
  65. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/mutations.py +0 -0
  66. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/queries.py +0 -0
  67. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
  68. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/types.py +0 -0
  69. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/__init__.py +0 -0
  70. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/mutations.py +0 -0
  71. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/queries.py +0 -0
  72. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
  73. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/types.py +0 -0
  74. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
  75. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
  76. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
  77. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
  78. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/types.py +0 -0
  79. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
  80. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
  81. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
  82. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
  83. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
  84. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
  85. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
  86. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
  87. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
  88. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
  89. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/__init__.py +0 -0
  90. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/mutations.py +0 -0
  91. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/queries.py +0 -0
  92. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/subscriptions.py +0 -0
  93. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/types.py +0 -0
  94. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/__init__.py +0 -0
  95. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/mutations.py +0 -0
  96. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/queries.py +0 -0
  97. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
  98. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/types.py +0 -0
  99. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/__init__.py +0 -0
  100. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/mutations.py +0 -0
  101. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/queries.py +0 -0
  102. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/subscriptions.py +0 -0
  103. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/types.py +0 -0
  104. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/__init__.py +0 -0
  105. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/mutations.py +0 -0
  106. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/queries.py +0 -0
  107. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
  108. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/__init__.py +0 -0
  109. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/mutations.py +0 -0
  110. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/queries.py +0 -0
  111. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
  112. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/types.py +0 -0
  113. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
  114. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/mutations.py +0 -0
  115. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/queries.py +0 -0
  116. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
  117. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
  118. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
  119. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
  120. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
  121. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
  122. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
  123. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
  124. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/queries.py +0 -0
  125. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
  126. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/types.py +0 -0
  127. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/__init__.py +0 -0
  128. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/mutations.py +0 -0
  129. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/queries.py +0 -0
  130. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
  131. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/types.py +0 -0
  132. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/__init__.py +0 -0
  133. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/mutations.py +0 -0
  134. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/queries.py +0 -0
  135. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
  136. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/types.py +0 -0
  137. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
  138. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
  139. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
  140. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
  141. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/types.py +0 -0
  142. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/__init__.py +0 -0
  143. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/mutations.py +0 -0
  144. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/queries.py +0 -0
  145. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
  146. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/types.py +0 -0
  147. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
  148. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
  149. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
  150. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
  151. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/types.py +0 -0
  152. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/__init__.py +0 -0
  153. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/mutations.py +0 -0
  154. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/queries.py +0 -0
  155. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/subscriptions.py +0 -0
  156. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenant_profiles/types.py +0 -0
  157. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/__init__.py +0 -0
  158. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/mutations.py +0 -0
  159. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/queries.py +0 -0
  160. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
  161. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/types.py +0 -0
  162. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/__init__.py +0 -0
  163. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/mutations.py +0 -0
  164. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/queries.py +0 -0
  165. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
  166. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/types.py +0 -0
  167. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/__init__.py +0 -0
  168. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/mutations.py +0 -0
  169. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/queries.py +0 -0
  170. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
  171. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/types.py +0 -0
  172. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/__init__.py +0 -0
  173. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/mutations.py +0 -0
  174. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/queries.py +0 -0
  175. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/subscriptions.py +0 -0
  176. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/types.py +0 -0
  177. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/tokens.py +0 -0
  178. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/dependency_links.txt +0 -0
  179. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/requires.txt +0 -0
  180. {taegis-sdk-python-1.0.1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: taegis-sdk-python
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Taegis Python SDK
5
5
  Home-page: https://github.com/secureworks/taegis-sdk-python
6
6
  Author: Secureworks
@@ -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
- while True:
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
- for node in exc.nodes:
280
- log.warning(
281
- f"{self.service.environment} - field {node.name.value} not found. Removing from query string..."
282
- )
283
- output = output.replace(node.name.value, "")
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."""
@@ -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
@@ -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
+ )