taegis-sdk-python 1.0.0rc1__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.0rc1/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.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/service_core.py +16 -20
  4. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/__init__.py +18 -0
  5. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/types.py +2 -0
  6. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/types.py +24 -0
  7. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/types.py +6 -0
  8. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/queries.py +40 -0
  9. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/types.py +27 -0
  10. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/types.py +3 -0
  11. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/types.py +66 -20
  12. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/types.py +48 -39
  13. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/__init__.py +29 -0
  14. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/mutations.py +31 -0
  15. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/queries.py +89 -0
  16. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/subscriptions.py +31 -0
  17. taegis-sdk-python-1.0.2/taegis_sdk_python/services/fast_ioc/types.py +114 -0
  18. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/types.py +52 -21
  19. taegis-sdk-python-1.0.2/taegis_sdk_python/services/tenant_profiles/__init__.py +33 -0
  20. taegis-sdk-python-1.0.2/taegis_sdk_python/services/tenant_profiles/mutations.py +456 -0
  21. taegis-sdk-python-1.0.2/taegis_sdk_python/services/tenant_profiles/queries.py +240 -0
  22. taegis-sdk-python-1.0.2/taegis_sdk_python/services/tenant_profiles/subscriptions.py +31 -0
  23. taegis-sdk-python-1.0.2/taegis_sdk_python/services/tenant_profiles/types.py +590 -0
  24. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/mutations.py +17 -0
  25. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/types.py +132 -56
  26. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/utils.py +47 -0
  27. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2/taegis_sdk_python.egg-info}/PKG-INFO +1 -1
  28. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/SOURCES.txt +10 -0
  29. taegis-sdk-python-1.0.0rc1/taegis_sdk_python/_version.py +0 -1
  30. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/LICENSE +0 -0
  31. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/MANIFEST.in +0 -0
  32. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/README.md +0 -0
  33. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/requirements-dev.txt +0 -0
  34. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/requirements-test.txt +0 -0
  35. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/requirements.txt +0 -0
  36. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/setup.cfg +0 -0
  37. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/setup.py +0 -0
  38. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/__init__.py +0 -0
  39. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/_consts.py +0 -0
  40. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/authentication.py +0 -0
  41. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/config.py +0 -0
  42. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/errors.py +0 -0
  43. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/__init__.py +0 -0
  44. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/mutations.py +0 -0
  45. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/queries.py +0 -0
  46. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
  47. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/access_points/types.py +0 -0
  48. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/__init__.py +0 -0
  49. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/mutations.py +0 -0
  50. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/queries.py +0 -0
  51. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
  52. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/__init__.py +0 -0
  53. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/mutations.py +0 -0
  54. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/queries.py +0 -0
  55. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
  56. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/alerts/types.py +0 -0
  57. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/__init__.py +0 -0
  58. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/mutations.py +0 -0
  59. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/queries.py +0 -0
  60. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
  61. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets/types.py +0 -0
  62. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/__init__.py +0 -0
  63. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/mutations.py +0 -0
  64. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/queries.py +0 -0
  65. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
  66. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/__init__.py +0 -0
  67. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/mutations.py +0 -0
  68. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/queries.py +0 -0
  69. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
  70. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/audits/types.py +0 -0
  71. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/__init__.py +0 -0
  72. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/mutations.py +0 -0
  73. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/queries.py +0 -0
  74. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
  75. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/__init__.py +0 -0
  76. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/mutations.py +0 -0
  77. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
  78. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/__init__.py +0 -0
  79. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/mutations.py +0 -0
  80. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/queries.py +0 -0
  81. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
  82. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/comments/types.py +0 -0
  83. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
  84. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
  85. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
  86. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
  87. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/detector_registry/types.py +0 -0
  88. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
  89. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
  90. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
  91. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
  92. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
  93. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
  94. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
  95. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
  96. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
  97. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/__init__.py +0 -0
  98. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/mutations.py +0 -0
  99. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/queries.py +0 -0
  100. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/subscriptions.py +0 -0
  101. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/entity_profile/types.py +0 -0
  102. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/__init__.py +0 -0
  103. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/mutations.py +0 -0
  104. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/queries.py +0 -0
  105. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
  106. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/event_search/types.py +0 -0
  107. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/__init__.py +0 -0
  108. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/mutations.py +0 -0
  109. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/queries.py +0 -0
  110. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/events/subscriptions.py +0 -0
  111. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/__init__.py +0 -0
  112. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/mutations.py +0 -0
  113. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/queries.py +0 -0
  114. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
  115. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/__init__.py +0 -0
  116. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/mutations.py +0 -0
  117. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/queries.py +0 -0
  118. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
  119. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations/types.py +0 -0
  120. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
  121. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/mutations.py +0 -0
  122. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/queries.py +0 -0
  123. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
  124. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
  125. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
  126. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
  127. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
  128. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
  129. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
  130. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
  131. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/queries.py +0 -0
  132. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
  133. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notebooks/types.py +0 -0
  134. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/__init__.py +0 -0
  135. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/mutations.py +0 -0
  136. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/queries.py +0 -0
  137. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
  138. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/notifications/types.py +0 -0
  139. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/__init__.py +0 -0
  140. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/mutations.py +0 -0
  141. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/queries.py +0 -0
  142. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
  143. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/preferences/types.py +0 -0
  144. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
  145. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
  146. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
  147. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
  148. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/roadrunner/types.py +0 -0
  149. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/__init__.py +0 -0
  150. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/mutations.py +0 -0
  151. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/queries.py +0 -0
  152. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
  153. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/rules/types.py +0 -0
  154. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
  155. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
  156. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
  157. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
  158. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/sharelinks/types.py +0 -0
  159. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/__init__.py +0 -0
  160. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/queries.py +0 -0
  161. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
  162. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/__init__.py +0 -0
  163. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/mutations.py +0 -0
  164. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/queries.py +0 -0
  165. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
  166. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/threat/types.py +0 -0
  167. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/__init__.py +0 -0
  168. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/mutations.py +0 -0
  169. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/queries.py +0 -0
  170. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
  171. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/trip/types.py +0 -0
  172. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/__init__.py +0 -0
  173. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/mutations.py +0 -0
  174. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/queries.py +0 -0
  175. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/subscriptions.py +0 -0
  176. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/services/users/types.py +0 -0
  177. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python/tokens.py +0 -0
  178. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/dependency_links.txt +0 -0
  179. {taegis-sdk-python-1.0.0rc1 → taegis-sdk-python-1.0.2}/taegis_sdk_python.egg-info/requires.txt +0 -0
  180. {taegis-sdk-python-1.0.0rc1 → 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.0rc1
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
@@ -37,6 +38,7 @@ from taegis_sdk_python.services.preferences import PreferencesService
37
38
  from taegis_sdk_python.services.roadrunner import RoadrunnerService
38
39
  from taegis_sdk_python.services.rules import RulesService
39
40
  from taegis_sdk_python.services.sharelinks import SharelinksService
41
+ from taegis_sdk_python.services.tenant_profiles import TenantProfilesService
40
42
  from taegis_sdk_python.services.tenants import TenantsService
41
43
  from taegis_sdk_python.services.threat import ThreatService
42
44
  from taegis_sdk_python.services.trip import TripService
@@ -108,6 +110,7 @@ class GraphQLService:
108
110
  self._event_search = None
109
111
  self._events = None
110
112
  self._exports = None
113
+ self._fast_ioc = None
111
114
  self._investigations = None
112
115
  self._investigations2 = None
113
116
  self._mitre_attack_info = None
@@ -118,6 +121,7 @@ class GraphQLService:
118
121
  self._rules = None
119
122
  self._core = None
120
123
  self._sharelinks = None
124
+ self._tenant_profiles = None
121
125
  self._tenants = None
122
126
  self._threat = None
123
127
  self._trip = None
@@ -313,6 +317,13 @@ class GraphQLService:
313
317
  self._exports = ExportsService(self)
314
318
  return self._exports
315
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
+
316
327
  @property
317
328
  def investigations(self):
318
329
  """Investigations Service Endpoint."""
@@ -383,6 +394,13 @@ class GraphQLService:
383
394
  self._sharelinks = SharelinksService(self)
384
395
  return self._sharelinks
385
396
 
397
+ @property
398
+ def tenant_profiles(self):
399
+ """Tenant Profiles Service Endpoint."""
400
+ if not self._tenant_profiles:
401
+ self._tenant_profiles = TenantProfilesService(self)
402
+ return self._tenant_profiles
403
+
386
404
  @property
387
405
  def tenants(self):
388
406
  """Tenants Service Endpoint."""
@@ -51,6 +51,8 @@ class AgentChannel(str, Enum):
51
51
  CANARY = "CANARY"
52
52
  QE_PREV = "QE_PREV"
53
53
  QE_NEXT = "QE_NEXT"
54
+ WEEKLY = "WEEKLY"
55
+ WEEKLY_NEXT = "WEEKLY_NEXT"
54
56
 
55
57
 
56
58
  @dataclass_json
@@ -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
@@ -72,6 +72,12 @@ class Client:
72
72
  environment: Optional[str] = field(
73
73
  default=None, metadata=config(field_name="environment")
74
74
  )
75
+ token_request_time: Optional[str] = field(
76
+ default=None, metadata=config(field_name="token_request_time")
77
+ )
78
+ token_request_count: Optional[int] = field(
79
+ default=None, metadata=config(field_name="token_request_count")
80
+ )
75
81
  role_assignments: Optional[List[ClientRoleAssignment]] = field(
76
82
  default=None, metadata=config(field_name="role_assignments")
77
83
  )
@@ -45,6 +45,46 @@ class TaegisSDKCollectorQuery:
45
45
  return Cluster.from_dict(result.get(endpoint))
46
46
  raise GraphQLNoRowsInResultSetError("for query getCluster")
47
47
 
48
+ def get_cluster_backlog_count(
49
+ self, cluster_id: str, time_range: TimeRange
50
+ ) -> List[ClusterNodeTimeSeries]:
51
+ """None."""
52
+ endpoint = "getClusterBacklogCount"
53
+
54
+ result = self.service.execute_query(
55
+ endpoint=endpoint,
56
+ variables={
57
+ "clusterID": prepare_input(cluster_id),
58
+ "timeRange": prepare_input(time_range),
59
+ },
60
+ output=build_output_string(ClusterNodeTimeSeries),
61
+ )
62
+ if result.get(endpoint) is not None:
63
+ return ClusterNodeTimeSeries.schema().load(
64
+ [r or {} for r in result.get(endpoint)], many=True
65
+ )
66
+ raise GraphQLNoRowsInResultSetError("for query getClusterBacklogCount")
67
+
68
+ def get_cluster_backlog_age(
69
+ self, cluster_id: str, time_range: TimeRange
70
+ ) -> List[ClusterNodeTimeSeries]:
71
+ """None."""
72
+ endpoint = "getClusterBacklogAge"
73
+
74
+ result = self.service.execute_query(
75
+ endpoint=endpoint,
76
+ variables={
77
+ "clusterID": prepare_input(cluster_id),
78
+ "timeRange": prepare_input(time_range),
79
+ },
80
+ output=build_output_string(ClusterNodeTimeSeries),
81
+ )
82
+ if result.get(endpoint) is not None:
83
+ return ClusterNodeTimeSeries.schema().load(
84
+ [r or {} for r in result.get(endpoint)], many=True
85
+ )
86
+ raise GraphQLNoRowsInResultSetError("for query getClusterBacklogAge")
87
+
48
88
  def get_clusters_by_ids(self, cluster_ids: List[str]) -> List[Cluster]:
49
89
  """Get clusters by IDs."""
50
90
  endpoint = "getClustersByIDs"
@@ -336,6 +336,15 @@ class AggregateRateByCollector:
336
336
  )
337
337
 
338
338
 
339
+ @dataclass_json
340
+ @dataclass(order=True, eq=True, frozen=True)
341
+ class TimeSeries:
342
+ """TimeSeries."""
343
+
344
+ time: Optional[str] = field(default=None, metadata=config(field_name="time"))
345
+ value: Optional[str] = field(default=None, metadata=config(field_name="value"))
346
+
347
+
339
348
  @dataclass_json
340
349
  @dataclass(order=True, eq=True, frozen=True)
341
350
  class FlowRate:
@@ -619,6 +628,24 @@ class NetworkInput:
619
628
  )
620
629
 
621
630
 
631
+ @dataclass_json
632
+ @dataclass(order=True, eq=True, frozen=True)
633
+ class ClusterNodeTimeSeries:
634
+ """ClusterNodeTimeSeries."""
635
+
636
+ cluster_id: Optional[str] = field(
637
+ default=None, metadata=config(field_name="clusterID")
638
+ )
639
+ tenant: Optional[str] = field(default=None, metadata=config(field_name="tenant"))
640
+ node_id: Optional[str] = field(default=None, metadata=config(field_name="nodeId"))
641
+ node_name: Optional[str] = field(
642
+ default=None, metadata=config(field_name="nodeName")
643
+ )
644
+ val: Optional[List[TimeSeries]] = field(
645
+ default=None, metadata=config(field_name="val")
646
+ )
647
+
648
+
622
649
  @dataclass_json
623
650
  @dataclass(order=True, eq=True, frozen=True)
624
651
  class LogLastSeenMetrics:
@@ -65,6 +65,9 @@ class EndpointGroup:
65
65
  is_system_generated: Optional[bool] = field(
66
66
  default=None, metadata=config(field_name="isSystemGenerated")
67
67
  )
68
+ is_default: Optional[bool] = field(
69
+ default=None, metadata=config(field_name="isDefault")
70
+ )
68
71
  desired_agent_version: Optional[str] = field(
69
72
  default=None, metadata=config(field_name="desiredAgentVersion")
70
73
  )
@@ -78,6 +78,17 @@ class LogicalType(str, Enum):
78
78
  TIMESTAMP = "Timestamp"
79
79
 
80
80
 
81
+ @dataclass_json
82
+ @dataclass(order=True, eq=True, frozen=True)
83
+ class BackendTargetingStrategy:
84
+ """BackendTargetingStrategy."""
85
+
86
+ primary: Optional[int] = field(default=None, metadata=config(field_name="primary"))
87
+ exclude: Optional[List[int]] = field(
88
+ default=None, metadata=config(field_name="exclude")
89
+ )
90
+
91
+
81
92
  @dataclass_json
82
93
  @dataclass(order=True, eq=True, frozen=True)
83
94
  class Event:
@@ -85,6 +96,9 @@ class Event:
85
96
 
86
97
  id: Optional[str] = field(default=None, metadata=config(field_name="id"))
87
98
  values: Optional[dict] = field(default=None, metadata=config(field_name="values"))
99
+ backends: Optional[List[int]] = field(
100
+ default=None, metadata=config(field_name="backends")
101
+ )
88
102
 
89
103
 
90
104
  @dataclass_json
@@ -144,6 +158,27 @@ class EventFetchOptions:
144
158
  normalize_event_keys: Optional[bool] = field(
145
159
  default=None, metadata=config(field_name="normalizeEventKeys")
146
160
  )
161
+ backend_strategy: Optional[BackendTargetingStrategy] = field(
162
+ default=None, metadata=config(field_name="backendStrategy")
163
+ )
164
+
165
+
166
+ @dataclass_json
167
+ @dataclass(order=True, eq=True, frozen=True)
168
+ class Field:
169
+ """Field."""
170
+
171
+ name: Optional[str] = field(default=None, metadata=config(field_name="name"))
172
+ searchable: Optional[bool] = field(
173
+ default=None, metadata=config(field_name="searchable")
174
+ )
175
+ debug: Optional[bool] = field(default=None, metadata=config(field_name="debug"))
176
+ base_type: Optional[BaseType] = field(
177
+ default=None, metadata=config(field_name="baseType")
178
+ )
179
+ logical_type: Optional[LogicalType] = field(
180
+ default=None, metadata=config(field_name="logicalType")
181
+ )
147
182
 
148
183
 
149
184
  @dataclass_json
@@ -171,28 +206,27 @@ class EventQueryOptions:
171
206
  default=None, metadata=config(field_name="includeMitreAttackInfoData")
172
207
  )
173
208
  save_to_cache: Optional[bool] = field(
174
- default=None, metadata=config(field_name="saveToCache")
209
+ default=None,
210
+ metadata=config(
211
+ metadata={
212
+ "deprecated": True,
213
+ "deprecation_reason": "Moving to backendStrategy as an exclusion option",
214
+ },
215
+ field_name="saveToCache",
216
+ ),
175
217
  )
176
218
  search_target: Optional[SearchTarget] = field(
177
- default=None, metadata=config(field_name="searchTarget")
178
- )
179
-
180
-
181
- @dataclass_json
182
- @dataclass(order=True, eq=True, frozen=True)
183
- class Field:
184
- """Field."""
185
-
186
- name: Optional[str] = field(default=None, metadata=config(field_name="name"))
187
- searchable: Optional[bool] = field(
188
- default=None, metadata=config(field_name="searchable")
189
- )
190
- debug: Optional[bool] = field(default=None, metadata=config(field_name="debug"))
191
- base_type: Optional[BaseType] = field(
192
- default=None, metadata=config(field_name="baseType")
219
+ default=None,
220
+ metadata=config(
221
+ metadata={
222
+ "deprecated": True,
223
+ "deprecation_reason": "Moving to backendStrategy",
224
+ },
225
+ field_name="searchTarget",
226
+ ),
193
227
  )
194
- logical_type: Optional[LogicalType] = field(
195
- default=None, metadata=config(field_name="logicalType")
228
+ backend_strategy: Optional[BackendTargetingStrategy] = field(
229
+ default=None, metadata=config(field_name="backendStrategy")
196
230
  )
197
231
 
198
232
 
@@ -212,7 +246,19 @@ class EventQueryResult:
212
246
  default=None, metadata=config(field_name="completed")
213
247
  )
214
248
  expires: Optional[str] = field(default=None, metadata=config(field_name="expires"))
215
- backend: Optional[str] = field(default=None, metadata=config(field_name="backend"))
249
+ backend: Optional[str] = field(
250
+ default=None,
251
+ metadata=config(
252
+ metadata={
253
+ "deprecated": True,
254
+ "deprecation_reason": "Moved to backendTarget",
255
+ },
256
+ field_name="backend",
257
+ ),
258
+ )
259
+ backend_target: Optional[int] = field(
260
+ default=None, metadata=config(field_name="backendTarget")
261
+ )
216
262
  facets: Optional[dict] = field(default=None, metadata=config(field_name="facets"))
217
263
  rows: Optional[List[dict]] = field(default=None, metadata=config(field_name="rows"))
218
264
  progress: Optional[EventQueryProgress] = field(
@@ -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