taegis-sdk-python 1.6.3__tar.gz → 1.6.5__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 (294) hide show
  1. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/PKG-INFO +1 -1
  2. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/_version.py +1 -1
  3. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/queries.py +69 -0
  4. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/types.py +17 -0
  5. taegis_sdk_python-1.6.5/taegis_sdk_python/services/datasources/mutations.py +117 -0
  6. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/datasources/queries.py +28 -0
  7. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/datasources/types.py +61 -22
  8. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/queries.py +24 -0
  9. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/types.py +39 -0
  10. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/queries.py +15 -0
  11. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/types.py +9 -0
  12. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/types.py +40 -0
  13. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/queries.py +50 -5
  14. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/types.py +79 -0
  15. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/queries.py +13 -0
  16. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/mutations.py +37 -1
  17. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/types.py +20 -0
  18. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/mutations.py +34 -0
  19. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/queries.py +13 -0
  20. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/types.py +109 -0
  21. taegis_sdk_python-1.6.3/taegis_sdk_python/services/datasources/mutations.py +0 -54
  22. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/.gitignore +0 -0
  23. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/LICENSE +0 -0
  24. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/README.md +0 -0
  25. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/pyproject.toml +0 -0
  26. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/__init__.py +0 -0
  27. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/_consts.py +0 -0
  28. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/authentication.py +0 -0
  29. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/__init__.py +0 -0
  30. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/alerts/__init__.py +0 -0
  31. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/alerts/federated_search.py +0 -0
  32. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/alerts/search.py +0 -0
  33. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/cases/__init__.py +0 -0
  34. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/cases/federated_search.py +0 -0
  35. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/cases/search.py +0 -0
  36. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/events/__init__.py +0 -0
  37. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/events/search.py +0 -0
  38. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/investigations/__init__.py +0 -0
  39. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/investigations/federated_search.py +0 -0
  40. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/investigations/search.py +0 -0
  41. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/sharelinks/__init__.py +0 -0
  42. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/sharelinks/create.py +0 -0
  43. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/commons/sharelinks/unfurl.py +0 -0
  44. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/config.py +0 -0
  45. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/errors.py +0 -0
  46. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/__init__.py +0 -0
  47. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/logging/__init__.py +0 -0
  48. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/logging/_default.py +0 -0
  49. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/retry/__init__.py +0 -0
  50. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/retry/_default.py +0 -0
  51. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/middlewares/utils.py +0 -0
  52. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/service_core.py +0 -0
  53. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/__init__.py +0 -0
  54. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/__init__.py +0 -0
  55. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/mutations.py +0 -0
  56. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/queries.py +0 -0
  57. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/subscriptions.py +0 -0
  58. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/access_points/types.py +0 -0
  59. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/__init__.py +0 -0
  60. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/mutations.py +0 -0
  61. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/queries.py +0 -0
  62. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/subscriptions.py +0 -0
  63. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/agent/types.py +0 -0
  64. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/__init__.py +0 -0
  65. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/mutations.py +0 -0
  66. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/queries.py +0 -0
  67. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/subscriptions.py +0 -0
  68. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts/types.py +738 -738
  69. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/__init__.py +0 -0
  70. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/mutations.py +0 -0
  71. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/queries.py +0 -0
  72. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/subscriptions.py +0 -0
  73. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/alerts_history/types.py +0 -0
  74. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/__init__.py +0 -0
  75. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/mutations.py +0 -0
  76. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/queries.py +0 -0
  77. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/subscriptions.py +0 -0
  78. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets/types.py +0 -0
  79. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/__init__.py +0 -0
  80. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/mutations.py +0 -0
  81. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/assets2/subscriptions.py +0 -0
  82. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/__init__.py +0 -0
  83. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/mutations.py +0 -0
  84. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/queries.py +0 -0
  85. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/subscriptions.py +0 -0
  86. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/audits/types.py +0 -0
  87. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/__init__.py +0 -0
  88. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/mutations.py +0 -0
  89. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/queries.py +0 -0
  90. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/subscriptions.py +0 -0
  91. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/authz/types.py +0 -0
  92. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/__init__.py +0 -0
  93. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/mutations.py +0 -0
  94. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/queries.py +0 -0
  95. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/subscriptions.py +0 -0
  96. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/byoti/types.py +0 -0
  97. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/__init__.py +0 -0
  98. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/mutations.py +0 -0
  99. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/queries.py +0 -0
  100. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/subscriptions.py +0 -0
  101. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/clients/types.py +0 -0
  102. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/__init__.py +0 -0
  103. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/mutations.py +0 -0
  104. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/queries.py +0 -0
  105. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/subscriptions.py +0 -0
  106. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/collector/types.py +0 -0
  107. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/__init__.py +0 -0
  108. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/mutations.py +0 -0
  109. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/queries.py +0 -0
  110. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/subscriptions.py +0 -0
  111. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/comments/types.py +0 -0
  112. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/__init__.py +0 -0
  113. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/mutations.py +0 -0
  114. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/queries.py +0 -0
  115. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/subscriptions.py +0 -0
  116. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/contracted_endpoint/types.py +0 -0
  117. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/__init__.py +0 -0
  118. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/mutations.py +0 -0
  119. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/queries.py +0 -0
  120. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/subscriptions.py +0 -0
  121. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/cql_metadata/types.py +0 -0
  122. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/datasources/__init__.py +0 -0
  123. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/datasources/subscriptions.py +0 -0
  124. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/__init__.py +0 -0
  125. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/mutations.py +0 -0
  126. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/queries.py +0 -0
  127. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/subscriptions.py +0 -0
  128. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/detector_registry/types.py +0 -0
  129. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/__init__.py +0 -0
  130. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/mutations.py +0 -0
  131. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/queries.py +0 -0
  132. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/subscriptions.py +0 -0
  133. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_command_manager/types.py +0 -0
  134. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/__init__.py +0 -0
  135. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/mutations.py +0 -0
  136. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/queries.py +0 -0
  137. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/subscriptions.py +0 -0
  138. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/endpoint_management_service/types.py +0 -0
  139. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/__init__.py +0 -0
  140. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/mutations.py +0 -0
  141. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/entity_context/subscriptions.py +0 -0
  142. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/__init__.py +0 -0
  143. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/mutations.py +0 -0
  144. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/queries.py +0 -0
  145. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/subscriptions.py +0 -0
  146. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/event_search/types.py +0 -0
  147. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/__init__.py +0 -0
  148. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/mutations.py +0 -0
  149. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/queries.py +0 -0
  150. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/subscriptions.py +0 -0
  151. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/events/types.py +0 -0
  152. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/__init__.py +0 -0
  153. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/mutations.py +0 -0
  154. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/queries.py +0 -0
  155. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/subscriptions.py +0 -0
  156. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/exports/types.py +0 -0
  157. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/__init__.py +0 -0
  158. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/mutations.py +0 -0
  159. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/queries.py +0 -0
  160. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/subscriptions.py +0 -0
  161. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/fast_ioc/types.py +0 -0
  162. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/__init__.py +0 -0
  163. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/mutations.py +0 -0
  164. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/queries.py +0 -0
  165. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/subscriptions.py +0 -0
  166. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/file_info/types.py +0 -0
  167. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/__init__.py +0 -0
  168. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/mutations.py +0 -0
  169. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/queries.py +0 -0
  170. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/subscriptions.py +0 -0
  171. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/ingest_stats/types.py +0 -0
  172. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/__init__.py +0 -0
  173. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/mutations.py +0 -0
  174. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/queries.py +0 -0
  175. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/subscriptions.py +0 -0
  176. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations/types.py +0 -0
  177. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/__init__.py +0 -0
  178. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/mutations.py +0 -0
  179. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/subscriptions.py +0 -0
  180. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/investigations2/types.py +0 -0
  181. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/__init__.py +0 -0
  182. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/mutations.py +0 -0
  183. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/queries.py +0 -0
  184. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/subscriptions.py +0 -0
  185. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/isensor/types.py +0 -0
  186. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/__init__.py +0 -0
  187. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/mutations.py +0 -0
  188. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/queries.py +0 -0
  189. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/subscriptions.py +0 -0
  190. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/mitre_attack_info/types.py +0 -0
  191. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/__init__.py +0 -0
  192. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/mutations.py +0 -0
  193. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/queries.py +0 -0
  194. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/subscriptions.py +0 -0
  195. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_context/types.py +0 -0
  196. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/__init__.py +0 -0
  197. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/mutations.py +0 -0
  198. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/queries.py +0 -0
  199. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/subscriptions.py +0 -0
  200. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/multi_tenant_ioc/types.py +0 -0
  201. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/__init__.py +0 -0
  202. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/mutations.py +0 -0
  203. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/queries.py +0 -0
  204. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/subscriptions.py +0 -0
  205. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/nl_search/types.py +0 -0
  206. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/__init__.py +0 -0
  207. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/mutations.py +0 -0
  208. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/queries.py +0 -0
  209. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/subscriptions.py +0 -0
  210. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notebooks/types.py +0 -0
  211. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/__init__.py +0 -0
  212. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/mutations.py +0 -0
  213. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/queries.py +0 -0
  214. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/subscriptions.py +0 -0
  215. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/notifications/types.py +0 -0
  216. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/__init__.py +0 -0
  217. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/mutations.py +0 -0
  218. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/queries.py +0 -0
  219. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/subscriptions.py +0 -0
  220. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/preferences/types.py +0 -0
  221. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/__init__.py +0 -0
  222. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/mutations.py +0 -0
  223. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/queries.py +0 -0
  224. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/subscriptions.py +0 -0
  225. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/process_trees/types.py +0 -0
  226. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/__init__.py +0 -0
  227. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/mutations.py +0 -0
  228. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/queries.py +0 -0
  229. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/subscriptions.py +0 -0
  230. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/queries/types.py +0 -0
  231. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/__init__.py +0 -0
  232. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/mutations.py +0 -0
  233. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/queries.py +0 -0
  234. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/subscriptions.py +0 -0
  235. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/roadrunner/types.py +0 -0
  236. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/__init__.py +0 -0
  237. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/mutations.py +0 -0
  238. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/queries.py +0 -0
  239. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/subscriptions.py +0 -0
  240. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/rules/types.py +0 -0
  241. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/__init__.py +0 -0
  242. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/mutations.py +0 -0
  243. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/queries.py +0 -0
  244. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/subscriptions.py +0 -0
  245. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/sharelinks/types.py +0 -0
  246. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/__init__.py +0 -0
  247. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/mutations.py +0 -0
  248. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/queries.py +0 -0
  249. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/subjects/subscriptions.py +0 -0
  250. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/__init__.py +0 -0
  251. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/mutations.py +0 -0
  252. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/queries.py +0 -0
  253. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/subscriptions.py +0 -0
  254. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenant_profiles/types.py +0 -0
  255. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/__init__.py +0 -0
  256. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/mutations.py +0 -0
  257. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/queries.py +0 -0
  258. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/subscriptions.py +0 -0
  259. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants/types.py +0 -0
  260. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/__init__.py +0 -0
  261. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/mutations.py +0 -0
  262. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/queries.py +0 -0
  263. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/tenants4/subscriptions.py +0 -0
  264. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/__init__.py +0 -0
  265. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/mutations.py +0 -0
  266. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat/subscriptions.py +0 -0
  267. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/__init__.py +0 -0
  268. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/mutations.py +0 -0
  269. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/queries.py +0 -0
  270. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/subscriptions.py +0 -0
  271. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/threat_score/types.py +0 -0
  272. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/__init__.py +0 -0
  273. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/mutations.py +0 -0
  274. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/queries.py +0 -0
  275. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/subscriptions.py +0 -0
  276. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trigger_action/types.py +0 -0
  277. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/__init__.py +0 -0
  278. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/mutations.py +0 -0
  279. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/subscriptions.py +0 -0
  280. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/trip/types.py +0 -0
  281. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/__init__.py +0 -0
  282. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/queries.py +0 -0
  283. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/users/subscriptions.py +0 -0
  284. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/__init__.py +0 -0
  285. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/mutations.py +0 -0
  286. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/queries.py +0 -0
  287. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/subscriptions.py +0 -0
  288. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/vdr/types.py +0 -0
  289. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/__init__.py +0 -0
  290. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/services/xdr_central_connector/subscriptions.py +0 -0
  291. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/templates/__init__.py +0 -0
  292. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/templates/_jinja2.py +0 -0
  293. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/tokens.py +0 -0
  294. {taegis_sdk_python-1.6.3 → taegis_sdk_python-1.6.5}/taegis_sdk_python/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taegis-sdk-python
3
- Version: 1.6.3
3
+ Version: 1.6.5
4
4
  Summary: Taegis Python SDK
5
5
  Project-URL: Homepage, https://github.com/secureworks/taegis-sdk-python
6
6
  Project-URL: Bug Reports, https://github.com/secureworks/taegis-sdk-python/issues
@@ -1,3 +1,3 @@
1
1
  """Version idenitier."""
2
2
 
3
- __version__ = "1.6.3"
3
+ __version__ = "1.6.5"
@@ -420,3 +420,72 @@ class TaegisSDKAssets2Query:
420
420
  if result.get(endpoint) is not None:
421
421
  return AssetsMacAddress.from_dict(result.get(endpoint))
422
422
  raise GraphQLNoRowsInResultSetError("for query assetsMacAddress")
423
+
424
+ def network_info_by_host_id(self, host_id: str) -> List[NetworkInfo]:
425
+ """ "Retrieve network information for a host based on a provided host_id."""
426
+ endpoint = "networkInfoByHostID"
427
+
428
+ result = self.service.execute_query(
429
+ endpoint=endpoint,
430
+ variables={
431
+ "hostId": prepare_input(host_id),
432
+ },
433
+ output=build_output_string(NetworkInfo),
434
+ )
435
+ if result.get(endpoint) is not None:
436
+ return NetworkInfo.schema().load(
437
+ [r or {} for r in result.get(endpoint)], many=True
438
+ )
439
+ raise GraphQLNoRowsInResultSetError("for query networkInfoByHostID")
440
+
441
+ def network_info_by_hostname(
442
+ self,
443
+ event_time: str,
444
+ host_name: str,
445
+ exact_match_count: int,
446
+ endpoint_types: Union[EndpointTypeV2, TaegisEnum],
447
+ ) -> List[NetworkInfo]:
448
+ """ "Retrieve network information for a host based on a provided hostname."""
449
+ endpoint = "networkInfoByHostname"
450
+
451
+ result = self.service.execute_query(
452
+ endpoint=endpoint,
453
+ variables={
454
+ "eventTime": prepare_input(event_time),
455
+ "hostName": prepare_input(host_name),
456
+ "exactMatchCount": prepare_input(exact_match_count),
457
+ "endpointTypes": prepare_input(endpoint_types),
458
+ },
459
+ output=build_output_string(NetworkInfo),
460
+ )
461
+ if result.get(endpoint) is not None:
462
+ return NetworkInfo.schema().load(
463
+ [r or {} for r in result.get(endpoint)], many=True
464
+ )
465
+ raise GraphQLNoRowsInResultSetError("for query networkInfoByHostname")
466
+
467
+ def network_info_by_ip_address(
468
+ self,
469
+ event_time: str,
470
+ ip_address: str,
471
+ exact_match_count: int,
472
+ endpoint_types: Union[EndpointTypeV2, TaegisEnum],
473
+ ) -> List[NetworkInfo]:
474
+ """ "Retrieve network information for a host based on a provided ip address."""
475
+ endpoint = "networkInfoByIpAddress"
476
+
477
+ result = self.service.execute_query(
478
+ endpoint=endpoint,
479
+ variables={
480
+ "eventTime": prepare_input(event_time),
481
+ "ipAddress": prepare_input(ip_address),
482
+ "exactMatchCount": prepare_input(exact_match_count),
483
+ "endpointTypes": prepare_input(endpoint_types),
484
+ },
485
+ output=build_output_string(NetworkInfo),
486
+ )
487
+ if result.get(endpoint) is not None:
488
+ return NetworkInfo.schema().load(
489
+ [r or {} for r in result.get(endpoint)], many=True
490
+ )
491
+ raise GraphQLNoRowsInResultSetError("for query networkInfoByIpAddress")
@@ -481,6 +481,23 @@ class PageInfoV2:
481
481
  )
482
482
 
483
483
 
484
+ @dataclass_json
485
+ @dataclass(order=True, eq=True, frozen=True)
486
+ class NetworkInfo:
487
+ """NetworkInfo."""
488
+
489
+ host_id: Optional[str] = field(default=None, metadata=config(field_name="hostId"))
490
+ host_name: Optional[str] = field(
491
+ default=None, metadata=config(field_name="hostName")
492
+ )
493
+ ip_addresses: Optional[List[str]] = field(
494
+ default=None, metadata=config(field_name="ipAddresses")
495
+ )
496
+ ethernet_addresses: Optional[List[str]] = field(
497
+ default=None, metadata=config(field_name="ethernetAddresses")
498
+ )
499
+
500
+
484
501
  @dataclass_json
485
502
  @dataclass(order=True, eq=True, frozen=True)
486
503
  class AssetHostname:
@@ -0,0 +1,117 @@
1
+ """Datasources Mutation."""
2
+
3
+ # pylint: disable=no-member, unused-argument, too-many-locals, duplicate-code, wildcard-import, unused-wildcard-import, cyclic-import
4
+
5
+
6
+ # Autogenerated
7
+ # DO NOT MODIFY
8
+
9
+ from __future__ import annotations
10
+
11
+ import logging
12
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
13
+
14
+ from taegis_sdk_python import GraphQLNoRowsInResultSetError
15
+ from taegis_sdk_python._consts import TaegisEnum
16
+ from taegis_sdk_python.services.datasources.types import *
17
+ from taegis_sdk_python.utils import (
18
+ build_output_string,
19
+ parse_union_result,
20
+ prepare_input,
21
+ )
22
+
23
+ if TYPE_CHECKING: # pragma: no cover
24
+ from taegis_sdk_python.services.datasources import DatasourcesService
25
+
26
+ log = logging.getLogger(__name__)
27
+
28
+
29
+ class TaegisSDKDatasourcesMutation:
30
+ """Taegis Datasources Mutation operations."""
31
+
32
+ def __init__(self, service: DatasourcesService):
33
+ self.service = service
34
+
35
+ def delete_data_source_assets(
36
+ self, delete_asset_input: List[DeleteAssetInput]
37
+ ) -> List[DeletedAsset]:
38
+ """Executes a delete operation on all included data sources for a specified tenant. Returns an array of
39
+ deleted assets with metadata. Authorization permission is required with delete access to the collector
40
+ object.."""
41
+ endpoint = "deleteDataSourceAssets"
42
+
43
+ result = self.service.execute_mutation(
44
+ endpoint=endpoint,
45
+ variables={
46
+ "deleteAssetInput": prepare_input(delete_asset_input),
47
+ },
48
+ output=build_output_string(DeletedAsset),
49
+ )
50
+ if result.get(endpoint) is not None:
51
+ return DeletedAsset.schema().load(
52
+ [r or {} for r in result.get(endpoint)], many=True
53
+ )
54
+ raise GraphQLNoRowsInResultSetError("for mutation deleteDataSourceAssets")
55
+
56
+ def delete_data_source_tag(self, tag_id: str) -> bool:
57
+ """Deleted a tag by its ID. Returns true if the tag was successfully deleted.."""
58
+ endpoint = "deleteDataSourceTag"
59
+
60
+ result = self.service.execute_mutation(
61
+ endpoint=endpoint,
62
+ variables={
63
+ "tagId": prepare_input(tag_id),
64
+ },
65
+ output="",
66
+ )
67
+ if result.get(endpoint) is not None:
68
+ return result.get(endpoint)
69
+ raise GraphQLNoRowsInResultSetError("for mutation deleteDataSourceTag")
70
+
71
+ def detach_data_source_tag(self, input_: DataSourceTagOperationInput) -> List[str]:
72
+ """Detaches an existing tag from datasource(s). Returns the assetIDs that were detached from the tag.."""
73
+ endpoint = "detachDataSourceTag"
74
+
75
+ result = self.service.execute_mutation(
76
+ endpoint=endpoint,
77
+ variables={
78
+ "input": prepare_input(input_),
79
+ },
80
+ output="",
81
+ )
82
+ if result.get(endpoint) is not None:
83
+ return result.get(endpoint)
84
+ raise GraphQLNoRowsInResultSetError("for mutation detachDataSourceTag")
85
+
86
+ def create_data_source_tag(self, input_: CreateDataSourceTagInput) -> DataSourceTag:
87
+ """Creates a new tag and associates it with existing datasource(s). Returns the created tag. This API
88
+ allows a maximum of 100 tags to be created for a given tenant.."""
89
+ endpoint = "createDataSourceTag"
90
+
91
+ result = self.service.execute_mutation(
92
+ endpoint=endpoint,
93
+ variables={
94
+ "input": prepare_input(input_),
95
+ },
96
+ output=build_output_string(DataSourceTag),
97
+ )
98
+ if result.get(endpoint) is not None:
99
+ return DataSourceTag.from_dict(result.get(endpoint))
100
+ raise GraphQLNoRowsInResultSetError("for mutation createDataSourceTag")
101
+
102
+ def attach_data_source_tag(self, input_: DataSourceTagOperationInput) -> List[str]:
103
+ """Attaches or associates an existing tag to datasource(s). Returns the assetIDs attached to the tag.
104
+ A maximum of 100 assetIDs can be associated in a single operation. A single asset can have up to 16 tags attached to it..
105
+ """
106
+ endpoint = "attachDataSourceTag"
107
+
108
+ result = self.service.execute_mutation(
109
+ endpoint=endpoint,
110
+ variables={
111
+ "input": prepare_input(input_),
112
+ },
113
+ output="",
114
+ )
115
+ if result.get(endpoint) is not None:
116
+ return result.get(endpoint)
117
+ raise GraphQLNoRowsInResultSetError("for mutation attachDataSourceTag")
@@ -124,3 +124,31 @@ class TaegisSDKDatasourcesQuery:
124
124
  if result.get(endpoint) is not None:
125
125
  return LastSeenAssetsQueryResult.from_dict(result.get(endpoint))
126
126
  raise GraphQLNoRowsInResultSetError("for query dataSourceLastSeenAssetsQuery")
127
+
128
+ def get_data_source_tags(self) -> List[DataSourceTag]:
129
+ """Fetches all tags associated with a given tenant.."""
130
+ endpoint = "getDataSourceTags"
131
+
132
+ result = self.service.execute_query(
133
+ endpoint=endpoint, variables={}, output=build_output_string(DataSourceTag)
134
+ )
135
+ if result.get(endpoint) is not None:
136
+ return DataSourceTag.schema().load(
137
+ [r or {} for r in result.get(endpoint)], many=True
138
+ )
139
+ raise GraphQLNoRowsInResultSetError("for query getDataSourceTags")
140
+
141
+ def get_data_source_tag(self, tag_id: str) -> DataSourceTag:
142
+ """Fetches a specific tag by its ID.."""
143
+ endpoint = "getDataSourceTag"
144
+
145
+ result = self.service.execute_query(
146
+ endpoint=endpoint,
147
+ variables={
148
+ "tagId": prepare_input(tag_id),
149
+ },
150
+ output=build_output_string(DataSourceTag),
151
+ )
152
+ if result.get(endpoint) is not None:
153
+ return DataSourceTag.from_dict(result.get(endpoint))
154
+ raise GraphQLNoRowsInResultSetError("for query getDataSourceTag")
@@ -26,6 +26,7 @@ class AuthzAction(str, Enum):
26
26
 
27
27
  READ = "READ"
28
28
  DELETE = "DELETE"
29
+ CREATE = "CREATE"
29
30
 
30
31
 
31
32
  class HealthState(str, Enum):
@@ -160,6 +161,9 @@ class DataSourcesWhereInput:
160
161
  collector_id: Optional[List[str]] = field(
161
162
  default=None, metadata=config(field_name="collectorId")
162
163
  )
164
+ tag_id: Optional[List[str]] = field(
165
+ default=None, metadata=config(field_name="tagId")
166
+ )
163
167
 
164
168
 
165
169
  @dataclass_json
@@ -189,11 +193,61 @@ class ClusterIdentity:
189
193
  name: Optional[str] = field(default=None, metadata=config(field_name="name"))
190
194
 
191
195
 
196
+ @dataclass_json
197
+ @dataclass(order=True, eq=True, frozen=True)
198
+ class DataSourceTag:
199
+ """DataSourceTag."""
200
+
201
+ id: Optional[str] = field(default=None, metadata=config(field_name="id"))
202
+ tenant: Optional[str] = field(default=None, metadata=config(field_name="tenant"))
203
+ key: Optional[str] = field(default=None, metadata=config(field_name="key"))
204
+ value: Optional[str] = field(default=None, metadata=config(field_name="value"))
205
+
206
+
207
+ @dataclass_json
208
+ @dataclass(order=True, eq=True, frozen=True)
209
+ class CreateDataSourceTagInput:
210
+ """CreateDataSourceTagInput."""
211
+
212
+ key: Optional[str] = field(default=None, metadata=config(field_name="key"))
213
+ value: Optional[str] = field(default=None, metadata=config(field_name="value"))
214
+
215
+
216
+ @dataclass_json
217
+ @dataclass(order=True, eq=True, frozen=True)
218
+ class DataSourceTagOperationInput:
219
+ """DataSourceTagOperationInput."""
220
+
221
+ tag_id: Optional[str] = field(default=None, metadata=config(field_name="tagId"))
222
+ asset_ids: Optional[List[str]] = field(
223
+ default=None, metadata=config(field_name="assetIds")
224
+ )
225
+
226
+
227
+ @dataclass_json
228
+ @dataclass(order=True, eq=True, frozen=True)
229
+ class DataSourceAssetsFilter:
230
+ """DataSourceAssetsFilter."""
231
+
232
+ status: Optional[List[Union[HealthState, TaegisEnum]]] = field(
233
+ default=None,
234
+ metadata=config(
235
+ encoder=encode_enum,
236
+ decoder=lambda x: decode_enum(HealthState, x),
237
+ field_name="status",
238
+ ),
239
+ )
240
+ where: Optional[DataSourcesWhereInput] = field(
241
+ default=None, metadata=config(field_name="where")
242
+ )
243
+
244
+
192
245
  @dataclass_json
193
246
  @dataclass(order=True, eq=True, frozen=True)
194
247
  class LastSeenAsset:
195
248
  """LastSeenAsset."""
196
249
 
250
+ asset_id: Optional[str] = field(default=None, metadata=config(field_name="assetId"))
197
251
  source_id: Optional[str] = field(
198
252
  default=None, metadata=config(field_name="sourceId")
199
253
  )
@@ -221,24 +275,15 @@ class LastSeenAsset:
221
275
  collector: Optional[ClusterIdentity] = field(
222
276
  default=None, metadata=config(field_name="collector")
223
277
  )
278
+ tags: Optional[List[DataSourceTag]] = field(
279
+ default=None, metadata=config(field_name="tags")
280
+ )
224
281
 
225
282
 
226
- @dataclass_json
227
- @dataclass(order=True, eq=True, frozen=True)
228
- class DataSourceAssetsFilter:
229
- """DataSourceAssetsFilter."""
230
-
231
- status: Optional[List[Union[HealthState, TaegisEnum]]] = field(
232
- default=None,
233
- metadata=config(
234
- encoder=encode_enum,
235
- decoder=lambda x: decode_enum(HealthState, x),
236
- field_name="status",
237
- ),
238
- )
239
- where: Optional[DataSourcesWhereInput] = field(
240
- default=None, metadata=config(field_name="where")
241
- )
283
+ FilterValueResponse = Union[
284
+ FilterValue,
285
+ ClusterIdentity,
286
+ ]
242
287
 
243
288
 
244
289
  @dataclass_json
@@ -273,12 +318,6 @@ class LastSeenAssetsQueryResult:
273
318
  )
274
319
 
275
320
 
276
- FilterValueResponse = Union[
277
- FilterValue,
278
- ClusterIdentity,
279
- ]
280
-
281
-
282
321
  @dataclass_json
283
322
  @dataclass(order=True, eq=True, frozen=True)
284
323
  class FilterValues:
@@ -204,6 +204,30 @@ class TaegisSDKEntityContextQuery:
204
204
  )
205
205
  raise GraphQLNoRowsInResultSetError("for query entityContextAssociatedEntities")
206
206
 
207
+ def entity_context_associated_entity_types(
208
+ self,
209
+ entry_point: EntityContextSingleEntryPoint,
210
+ source: Optional[EntityContextSourceInput] = None,
211
+ ) -> EntityContextAssociatedEntityTypesResponse:
212
+ """None."""
213
+ endpoint = "entityContextAssociatedEntityTypes"
214
+
215
+ result = self.service.execute_query(
216
+ endpoint=endpoint,
217
+ variables={
218
+ "entryPoint": prepare_input(entry_point),
219
+ "source": prepare_input(source),
220
+ },
221
+ output=build_output_string(EntityContextAssociatedEntityTypesResponse),
222
+ )
223
+ if result.get(endpoint) is not None:
224
+ return EntityContextAssociatedEntityTypesResponse.from_dict(
225
+ result.get(endpoint)
226
+ )
227
+ raise GraphQLNoRowsInResultSetError(
228
+ "for query entityContextAssociatedEntityTypes"
229
+ )
230
+
207
231
  def entity_context_pivot_ql(
208
232
  self,
209
233
  entry_point: EntityContextEntryPoint,
@@ -197,6 +197,15 @@ class EntityContextPageInput:
197
197
  )
198
198
 
199
199
 
200
+ @dataclass_json
201
+ @dataclass(order=True, eq=True, frozen=True)
202
+ class EntityContextTypeCounts:
203
+ """EntityContextTypeCounts."""
204
+
205
+ type: Optional[str] = field(default=None, metadata=config(field_name="type"))
206
+ count: Optional[int] = field(default=None, metadata=config(field_name="count"))
207
+
208
+
200
209
  @dataclass_json
201
210
  @dataclass(order=True, eq=True, frozen=True)
202
211
  class EntityContextPageInfo:
@@ -392,6 +401,22 @@ class EntityContextWhoIsContact:
392
401
  )
393
402
 
394
403
 
404
+ @dataclass_json
405
+ @dataclass(order=True, eq=True, frozen=True)
406
+ class EntityContextSingleEntryPoint:
407
+ """EntityContextSingleEntryPoint."""
408
+
409
+ id: Optional[str] = field(default=None, metadata=config(field_name="id"))
410
+ type: Optional[Union[EntityContextEntryPointType, TaegisEnum]] = field(
411
+ default=None,
412
+ metadata=config(
413
+ encoder=encode_enum,
414
+ decoder=lambda x: decode_enum(EntityContextEntryPointType, x),
415
+ field_name="type",
416
+ ),
417
+ )
418
+
419
+
395
420
  @dataclass_json
396
421
  @dataclass(order=True, eq=True, frozen=True)
397
422
  class EntityContextOrigin:
@@ -461,6 +486,20 @@ class EntityContextRelatedResources:
461
486
  )
462
487
 
463
488
 
489
+ @dataclass_json
490
+ @dataclass(order=True, eq=True, frozen=True)
491
+ class EntityContextAssociatedEntityTypesResponse:
492
+ """EntityContextAssociatedEntityTypesResponse."""
493
+
494
+ total_count: Optional[int] = field(
495
+ default=None, metadata=config(field_name="totalCount")
496
+ )
497
+ error: Optional[str] = field(default=None, metadata=config(field_name="error"))
498
+ types: Optional[List[EntityContextTypeCounts]] = field(
499
+ default=None, metadata=config(field_name="types")
500
+ )
501
+
502
+
464
503
  @dataclass_json
465
504
  @dataclass(order=True, eq=True, frozen=True)
466
505
  class EntityContextPropertyQuery:
@@ -289,6 +289,21 @@ class TaegisSDKInvestigations2Query:
289
289
  return CasesAggregation.from_dict(result.get(endpoint))
290
290
  raise GraphQLNoRowsInResultSetError("for query casesAggregation")
291
291
 
292
+ def cases_is_key_findings_rich_text(self, id_: str) -> bool:
293
+ """DO NOT USE: casesIsKeyFindingsRichText is meant for the Taegis/Central UIs only. It may be removed at any time without notice."""
294
+ endpoint = "casesIsKeyFindingsRichText"
295
+
296
+ result = self.service.execute_query(
297
+ endpoint=endpoint,
298
+ variables={
299
+ "id": prepare_input(id_),
300
+ },
301
+ output="",
302
+ )
303
+ if result.get(endpoint) is not None:
304
+ return result.get(endpoint)
305
+ raise GraphQLNoRowsInResultSetError("for query casesIsKeyFindingsRichText")
306
+
292
307
  def investigation_v2(self, arguments: InvestigationV2Arguments) -> InvestigationV2:
293
308
  """investigationV2 gets a single Investigation.."""
294
309
  endpoint = "investigationV2"
@@ -58,6 +58,14 @@ class CentralUser:
58
58
  id: Optional[str] = field(default=None, metadata=config(field_name="id"))
59
59
 
60
60
 
61
+ @dataclass_json
62
+ @dataclass(order=True, eq=True, frozen=True)
63
+ class CentralClient:
64
+ """CentralClient."""
65
+
66
+ id: Optional[str] = field(default=None, metadata=config(field_name="id"))
67
+
68
+
61
69
  @dataclass_json
62
70
  @dataclass(order=True, eq=True, frozen=True)
63
71
  class CacheInvalidateInput:
@@ -87,6 +95,7 @@ SubjectIdentity = Union[
87
95
  TDRUser,
88
96
  Client,
89
97
  CentralUser,
98
+ CentralClient,
90
99
  ]
91
100
 
92
101
 
@@ -111,6 +111,21 @@ class CachedEntryType(str, Enum):
111
111
  ALL_LICENSES_FOR_TENANT = "ALL_LICENSES_FOR_TENANT"
112
112
 
113
113
 
114
+ class RetentionMonths(str, Enum):
115
+ """RetentionMonths."""
116
+
117
+ UNKNOWN_MONTHS = "UNKNOWN_MONTHS"
118
+ ZERO_MONTHS = "ZERO_MONTHS"
119
+ ONE_MONTH = "ONE_MONTH"
120
+ THREE_MONTHS = "THREE_MONTHS"
121
+ TWELVE_MONTHS = "TWELVE_MONTHS"
122
+ THIRTEEN_MONTHS = "THIRTEEN_MONTHS"
123
+ EIGHTEEN_MONTHS = "EIGHTEEN_MONTHS"
124
+ TWENTY_FOUR_MONTHS = "TWENTY_FOUR_MONTHS"
125
+ THIRTY_SIX_MONTHS = "THIRTY_SIX_MONTHS"
126
+ SIXTY_MONTHS = "SIXTY_MONTHS"
127
+
128
+
114
129
  @dataclass_json
115
130
  @dataclass(order=True, eq=True, frozen=True)
116
131
  class MappedTenant:
@@ -263,6 +278,22 @@ class DeleteCachedEntriesOutput:
263
278
  message: Optional[str] = field(default=None, metadata=config(field_name="message"))
264
279
 
265
280
 
281
+ @dataclass_json
282
+ @dataclass(order=True, eq=True, frozen=True)
283
+ class RetentionPolicy:
284
+ """RetentionPolicy."""
285
+
286
+ months: Optional[int] = field(default=None, metadata=config(field_name="months"))
287
+ period: Optional[Union[RetentionMonths, TaegisEnum]] = field(
288
+ default=None,
289
+ metadata=config(
290
+ encoder=encode_enum,
291
+ decoder=lambda x: decode_enum(RetentionMonths, x),
292
+ field_name="period",
293
+ ),
294
+ )
295
+
296
+
266
297
  @dataclass_json
267
298
  @dataclass(order=True, eq=True, frozen=True)
268
299
  class ProductCatalogInput:
@@ -406,6 +437,12 @@ class TenantV4:
406
437
  support_inherited: Optional[bool] = field(
407
438
  default=None, metadata=config(field_name="supportInherited")
408
439
  )
440
+ allow_response_actions: Optional[bool] = field(
441
+ default=None, metadata=config(field_name="allowResponseActions")
442
+ )
443
+ actions_approver: Optional[str] = field(
444
+ default=None, metadata=config(field_name="actionsApprover")
445
+ )
409
446
  expires_at: Optional[str] = field(
410
447
  default=None, metadata=config(field_name="expiresAt")
411
448
  )
@@ -446,6 +483,9 @@ class TenantV4:
446
483
  central_tenant: Optional[MappedTenant] = field(
447
484
  default=None, metadata=config(field_name="centralTenant")
448
485
  )
486
+ data_retention_policy: Optional[RetentionPolicy] = field(
487
+ default=None, metadata=config(field_name="dataRetentionPolicy")
488
+ )
449
489
 
450
490
 
451
491
  @dataclass_json
@@ -136,17 +136,44 @@ class TaegisSDKThreatQuery:
136
136
  raise GraphQLNoRowsInResultSetError("for query threatIdentitiesByConfidence")
137
137
 
138
138
  def threat_watchlist(
139
- self, type_: Union[ThreatParentType, TaegisEnum]
139
+ self,
140
+ type_: Union[ThreatParentType, TaegisEnum],
141
+ page: Optional[PageInput] = None,
142
+ filters: Optional[WatchlistFilter] = None,
140
143
  ) -> List[ThreatRelationship]:
141
144
  """Gets a watchlist by type. All results are considered **high confidence**.
142
145
  Only IP and DOMAIN types are supported. FILE type has been removed from this endpoint.
143
- Instead, use the paged endpoint threatTimsMalwareFiles for FILE types.."""
146
+ Instead, use the paged endpoint threatTimsMalwareFiles for FILE types.
147
+
148
+ Results are sorted by the 'created' field in descending order (newest first).
149
+
150
+ Additional filtering options:
151
+ - filters.timeRange: Optional time range filter. If not provided, returns all records.
152
+ Usage scenarios:
153
+ - Only start provided: Returns all records from the specified start time to now (no upper bound)
154
+ - Only end provided: Returns all records from the beginning up to the specified end time (no lower bound)
155
+ - Both provided: Returns records within the specified time range
156
+ - Neither provided: Returns all records (no time filtering)
157
+ Example: filters: { timeRange: { start: "2024-01-01T00:00:00Z", end: "2024-01-31T23:59:59Z" } }
158
+ - filters.where: Field-specific filtering (targetRef and confidence)
159
+ Examples:
160
+ Confidence Range: filters: { where: { confidence_gte: 70, confidence_lte: 90 } }
161
+ Confidence Minimum: filters: { where: { confidence_gte: 80 } }
162
+ Confidence Maximum: filters: { where: { confidence_lte: 50 } }
163
+ Target Filter: filters: { where: { or: [{ targetRef: "malware_name" }] } }
164
+ Note: Each filter should use either confidence fields OR targetRef, not both in the same where clause
165
+ - page: Optional pagination controls (offset/limit). If not provided, returns ALL results.
166
+ When paginating, clients must detect the last page by checking if the number of returned
167
+ results is less than the requested limit, or if an empty array is returned..
168
+ """
144
169
  endpoint = "threatWatchlist"
145
170
 
146
171
  result = self.service.execute_query(
147
172
  endpoint=endpoint,
148
173
  variables={
149
174
  "type": prepare_input(type_),
175
+ "page": prepare_input(page),
176
+ "filters": prepare_input(filters),
150
177
  },
151
178
  output=build_output_string(ThreatRelationship),
152
179
  )
@@ -157,22 +184,40 @@ class TaegisSDKThreatQuery:
157
184
  raise GraphQLNoRowsInResultSetError("for query threatWatchlist")
158
185
 
159
186
  def threat_tims_malware_files(
160
- self, last_created: Optional[str] = None
187
+ self,
188
+ last_created: Optional[str] = None,
189
+ filters: Optional[MalwareFileFilter] = None,
161
190
  ) -> PagedMalwareFiles:
162
191
  """Get all TIMS 2.0 Malware file hashes. All results are considered **high confidence**.
163
- This is a paged service, requiring repeated queries. Total number of results can number over 750k.
192
+ This is a cursor-based paged service, requiring repeated queries. Total number of results can number over 750k.
164
193
  For the initial query, do not provide any search parameters or set 'last_created' to null.
165
194
  Subsequent queries should include the previous query's 'last_created' result from 'PagedMalwareFiles.last_created'
166
195
  as the input parameter. Returns pages of 10,000 at a time, sorted by the indicators field 'created' in desc order.
167
196
  The returned field 'has_more' will be false when the last page is returned.
168
197
  * Note: 'created' refers to an internal field associated with the indicator, not the time the indicator was first found.
169
- It is only used for sorting.."""
198
+ It is only used for sorting.
199
+
200
+ Additional filtering options:
201
+ - filters.timeRange: Optional time range filter. If not provided, returns all records.
202
+ Usage scenarios:
203
+ - Only start provided: Returns all records from the specified start time to now (no upper bound)
204
+ - Only end provided: Returns all records from the beginning up to the specified end time (no lower bound)
205
+ - Both provided: Returns records within the specified time range
206
+ - Neither provided: Returns all records (no time filtering)
207
+ Example: filters: { timeRange: { start: "2024-01-01T00:00:00Z", end: "2024-01-31T23:59:59Z" } }
208
+ - filters.where: Threat description filtering via OR array format only
209
+ Example: filters: { where: { or: [{ threatDescription: "malware_name" }] } }
210
+
211
+ Pagination: Uses cursor-based pagination with 'last_created' parameter. For small time ranges
212
+ (results < 10k), all data is returned in one response. For larger datasets, use 'last_created'
213
+ to paginate through results.."""
170
214
  endpoint = "threatTimsMalwareFiles"
171
215
 
172
216
  result = self.service.execute_query(
173
217
  endpoint=endpoint,
174
218
  variables={
175
219
  "last_created": prepare_input(last_created),
220
+ "filters": prepare_input(filters),
176
221
  },
177
222
  output=build_output_string(PagedMalwareFiles),
178
223
  )