splunk-soar-sdk 3.0.0__tar.gz → 3.1.0__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 (225) hide show
  1. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/PKG-INFO +1 -1
  2. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/pyproject.toml +1 -1
  3. splunk_soar_sdk-3.1.0/release_notes.txt +21 -0
  4. splunk_soar_sdk-3.1.0/release_version.txt +1 -0
  5. splunk_soar_sdk-3.1.0/src/soar_sdk/models/finding.py +54 -0
  6. splunk_soar_sdk-3.1.0/tests/test_finding.py +126 -0
  7. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/uv.lock +1 -1
  8. splunk_soar_sdk-3.0.0/release_notes.txt +0 -49
  9. splunk_soar_sdk-3.0.0/release_version.txt +0 -1
  10. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  11. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  12. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/pull_request_template.md +0 -0
  13. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/utils/github.js +0 -0
  14. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/utils/update_version.py +0 -0
  15. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/workflows/code_quality.yml +0 -0
  16. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/workflows/commit_hygiene.yml +0 -0
  17. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/workflows/generate_docs.yml +0 -0
  18. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.github/workflows/semantic_release.yml +0 -0
  19. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.gitignore +0 -0
  20. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.pre-commit-config.yaml +0 -0
  21. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/.releaserc +0 -0
  22. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/LICENSE +0 -0
  23. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/README.md +0 -0
  24. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/commitlint.config.js +0 -0
  25. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/api_reference.rst +0 -0
  26. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/app_structure/index.rst +0 -0
  27. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/app_structure/pre-commit-config.yaml.rst +0 -0
  28. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/app_structure/pyproject.toml.rst +0 -0
  29. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/app_structure/src_app.rst +0 -0
  30. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/changelog.rst +0 -0
  31. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/cli_reference.rst +0 -0
  32. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/conf.py +0 -0
  33. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/custom_views/index.rst +0 -0
  34. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/custom_views/reusable_components.md +0 -0
  35. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/custom_views/templates.md +0 -0
  36. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/custom_views/view_handlers.md +0 -0
  37. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/getting_started/defining_asset.rst +0 -0
  38. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/getting_started/first_action.rst +0 -0
  39. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/getting_started/index.rst +0 -0
  40. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/getting_started/init_app.rst +0 -0
  41. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/getting_started/installation.rst +0 -0
  42. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/getting_started/testing_and_building.rst +0 -0
  43. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/docs/index.rst +0 -0
  44. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/__init__.py +0 -0
  45. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/abstract.py +0 -0
  46. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/action_results.py +0 -0
  47. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/actions_manager.py +0 -0
  48. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/apis/__init__.py +0 -0
  49. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/apis/artifact.py +0 -0
  50. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/apis/container.py +0 -0
  51. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/apis/utils.py +0 -0
  52. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/apis/vault.py +0 -0
  53. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app.py +0 -0
  54. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app_cli_runner.py +0 -0
  55. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app_client.py +0 -0
  56. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app_templates/basic_app/.gitignore +0 -0
  57. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app_templates/basic_app/.pre-commit-config.yaml +0 -0
  58. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app_templates/basic_app/logo.svg +0 -0
  59. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app_templates/basic_app/logo_dark.svg +0 -0
  60. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app_templates/basic_app/src/__init__.py +0 -0
  61. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/app_templates/basic_app/uv.lock +0 -0
  62. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/asset.py +0 -0
  63. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/async_utils.py +0 -0
  64. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/__init__.py +0 -0
  65. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/cli.py +0 -0
  66. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/init/__init__.py +0 -0
  67. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/init/cli.py +0 -0
  68. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/manifests/__init__.py +0 -0
  69. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/manifests/cli.py +0 -0
  70. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/manifests/deserializers.py +0 -0
  71. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/manifests/processors.py +0 -0
  72. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/manifests/serializers.py +0 -0
  73. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/package/cli.py +0 -0
  74. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/package/utils.py +0 -0
  75. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/path_utils.py +0 -0
  76. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/cli/utils.py +0 -0
  77. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/code_renderers/__init__.py +0 -0
  78. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/code_renderers/action_renderer.py +0 -0
  79. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/code_renderers/app_renderer.py +0 -0
  80. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/code_renderers/asset_renderer.py +0 -0
  81. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/code_renderers/renderer.py +0 -0
  82. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/code_renderers/templates/pyproject.toml.jinja +0 -0
  83. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/code_renderers/toml_renderer.py +0 -0
  84. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/colors.py +0 -0
  85. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/compat.py +0 -0
  86. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/crypto.py +0 -0
  87. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/decorators/__init__.py +0 -0
  88. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/decorators/action.py +0 -0
  89. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/decorators/make_request.py +0 -0
  90. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/decorators/on_poll.py +0 -0
  91. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/decorators/test_connectivity.py +0 -0
  92. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/decorators/view_handler.py +0 -0
  93. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/decorators/webhook.py +0 -0
  94. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/exceptions.py +0 -0
  95. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/field_utils.py +0 -0
  96. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/input_spec.py +0 -0
  97. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/logging.py +0 -0
  98. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/meta/__init__.py +0 -0
  99. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/meta/actions.py +0 -0
  100. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/meta/adapters.py +0 -0
  101. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/meta/app.py +0 -0
  102. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/meta/datatypes.py +0 -0
  103. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/meta/dependencies.py +0 -0
  104. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/meta/webhooks.py +0 -0
  105. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/models/__init__.py +0 -0
  106. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/models/artifact.py +0 -0
  107. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/models/container.py +0 -0
  108. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/models/vault_attachment.py +0 -0
  109. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/models/view.py +0 -0
  110. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/params.py +0 -0
  111. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/paths.py +0 -0
  112. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/py.typed +0 -0
  113. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/action_result.py +0 -0
  114. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/app.py +0 -0
  115. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/base_connector.py +0 -0
  116. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/connector_result.py +0 -0
  117. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/consts.py +0 -0
  118. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/encryption_helper.py +0 -0
  119. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/install_info.py +0 -0
  120. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/json_keys.py +0 -0
  121. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/ph_ipc.py +0 -0
  122. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom/vault.py +0 -0
  123. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom_common/app_interface/app_interface.py +0 -0
  124. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/shims/phantom_common/encryption/encryption_manager_factory.py +0 -0
  125. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/templates/base/base_template.html +0 -0
  126. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/templates/base/error.html +0 -0
  127. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/templates/base/header.html +0 -0
  128. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/templates/base/logo_header.html +0 -0
  129. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/templates/components/pie_chart.html +0 -0
  130. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/templates/widgets/widget_resize_snippet.html +0 -0
  131. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/templates/widgets/widget_template.html +0 -0
  132. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/types.py +0 -0
  133. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/views/__init__.py +0 -0
  134. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/views/component_registry.py +0 -0
  135. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/views/components/__init__.py +0 -0
  136. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/views/components/pie_chart.py +0 -0
  137. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/views/template_filters.py +0 -0
  138. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/views/template_renderer.py +0 -0
  139. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/views/view_parser.py +0 -0
  140. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/webhooks/__init__.py +0 -0
  141. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/webhooks/models.py +0 -0
  142. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/src/soar_sdk/webhooks/routing.py +0 -0
  143. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/test.png +0 -0
  144. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/test.txt +0 -0
  145. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/__init__.py +0 -0
  146. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/__init__.py +0 -0
  147. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/datapath_parse.py +0 -0
  148. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/manifests/__init__.py +0 -0
  149. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/manifests/test_processors.py +0 -0
  150. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_assets/converted_app/actions.py.txt +0 -0
  151. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_cli.py +0 -0
  152. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_convert_cli.py +0 -0
  153. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_deserializers.py +0 -0
  154. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_init_cli.py +0 -0
  155. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_manifests_cli.py +0 -0
  156. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_package_cli.py +0 -0
  157. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_serializers.py +0 -0
  158. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/cli/test_utils.py +0 -0
  159. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/code_renderers/test_action_renderer.py +0 -0
  160. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/conftest.py +0 -0
  161. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/app.json +0 -0
  162. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/example_asset.json +0 -0
  163. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/logo.svg +0 -0
  164. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/logo_dark.svg +0 -0
  165. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/pyproject.toml +0 -0
  166. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/release_notes/v1.md +0 -0
  167. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/src/__init__.py +0 -0
  168. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/src/actions/__init__.py +0 -0
  169. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/src/actions/async_action.py +0 -0
  170. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/src/actions/generate_category.py +0 -0
  171. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/src/actions/reverse_string.py +0 -0
  172. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/src/app.py +0 -0
  173. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/src/ignoreme.txt +0 -0
  174. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/templates/reverse_string.html +0 -0
  175. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app/uv.lock +0 -0
  176. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app_with_webhook/app.json +0 -0
  177. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app_with_webhook/logo.svg +0 -0
  178. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app_with_webhook/logo_dark.svg +0 -0
  179. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app_with_webhook/pyproject.toml +0 -0
  180. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app_with_webhook/src/__init__.py +0 -0
  181. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app_with_webhook/src/app.py +0 -0
  182. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/example_app_with_webhook/uv.lock +0 -0
  183. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/interfaces/__init__.py +0 -0
  184. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/interfaces/test_artifact_interface.py +0 -0
  185. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/interfaces/test_container_interface.py +0 -0
  186. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/interfaces/test_vault_interface.py +0 -0
  187. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/meta/__init__.py +0 -0
  188. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/meta/test_actions.py +0 -0
  189. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/meta/test_adapters.py +0 -0
  190. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/meta/test_datatypes.py +0 -0
  191. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/meta/test_dependencies.py +0 -0
  192. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/meta/test_webhooks.py +0 -0
  193. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/mocks/__init__.py +0 -0
  194. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/mocks/dynamic_mocks.py +0 -0
  195. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/mocks/importable_action.py +0 -0
  196. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/stubs.py +0 -0
  197. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_action_results.py +0 -0
  198. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_actions_manager.py +0 -0
  199. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_app.py +0 -0
  200. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_app_action.py +0 -0
  201. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_app_action_params.py +0 -0
  202. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_app_action_results.py +0 -0
  203. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_app_client.py +0 -0
  204. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_app_runner.py +0 -0
  205. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_asset.py +0 -0
  206. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_assets/splunk-sdk-2.1.0.tar.gz +0 -0
  207. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_async_integration.py +0 -0
  208. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_async_utils.py +0 -0
  209. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_code_renderers.py +0 -0
  210. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_compat.py +0 -0
  211. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_container.py +0 -0
  212. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_custom_views.py +0 -0
  213. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_encryption.py +0 -0
  214. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_field_utils.py +0 -0
  215. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_input_spec.py +0 -0
  216. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_logging.py +0 -0
  217. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_make_request_action.py +0 -0
  218. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_on_poll.py +0 -0
  219. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_params.py +0 -0
  220. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_template_filters.py +0 -0
  221. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_template_renderer.py +0 -0
  222. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_test_connectivity.py +0 -0
  223. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/test_view_parser.py +0 -0
  224. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/webhooks/test_models.py +0 -0
  225. {splunk_soar_sdk-3.0.0 → splunk_soar_sdk-3.1.0}/tests/webhooks/test_routing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: splunk-soar-sdk
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: The official framework for developing and testing Splunk SOAR Apps
5
5
  Project-URL: Homepage, https://github.com/phantomcyber/splunk-soar-sdk
6
6
  Project-URL: Documentation, https://github.com/phantomcyber/splunk-soar-sdk
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "splunk-soar-sdk"
3
- version = "3.0.0"
3
+ version = "3.1.0"
4
4
  description = "The official framework for developing and testing Splunk SOAR Apps"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13, <=3.14"
@@ -0,0 +1,21 @@
1
+ # [3.1.0](https://github.com/phantomcyber/splunk-soar-sdk/compare/3.0.0...3.1.0) (2025-10-27)
2
+
3
+
4
+ ### Features
5
+
6
+ * add es finding model into sdk for platform and sdk use ([199cfdf](https://github.com/phantomcyber/splunk-soar-sdk/commit/199cfdf6dc53a8914cd63a7514479694ed950862))
7
+
8
+
9
+
10
+
11
+
12
+ # [3.1.0](https://github.com/phantomcyber/splunk-soar-sdk/compare/3.0.0...3.1.0) (2025-10-27)
13
+
14
+
15
+ ### Features
16
+
17
+ * add es finding model into sdk for platform and sdk use ([199cfdf](https://github.com/phantomcyber/splunk-soar-sdk/commit/199cfdf6dc53a8914cd63a7514479694ed950862))
18
+
19
+
20
+
21
+
@@ -0,0 +1 @@
1
+ 3.1.0
@@ -0,0 +1,54 @@
1
+ from pydantic import BaseModel
2
+ from typing import Any
3
+
4
+
5
+ class DrilldownSearch(BaseModel):
6
+ """Represents a drilldown search in a finding."""
7
+
8
+ name: str
9
+ search: str
10
+ earliest: str
11
+ latest: str
12
+
13
+
14
+ class DrilldownDashboard(BaseModel):
15
+ """Represents a drilldown dashboard in a finding."""
16
+
17
+ dashboard: str
18
+ name: str
19
+ tokens: list[str] | None = None
20
+
21
+
22
+ class Finding(BaseModel):
23
+ """Represents a finding to be created during on_finding.
24
+
25
+ Findings are stored in ES and can be associated with SOAR containers/artifacts
26
+ for investigation workflow.
27
+ """
28
+
29
+ class Config:
30
+ """Pydantic config."""
31
+
32
+ extra = "forbid"
33
+
34
+ rule_title: str
35
+ rule_description: str
36
+ security_domain: str
37
+ risk_object: str
38
+ risk_object_type: str
39
+ risk_score: float
40
+ status: str | None = None
41
+ urgency: str | None = None
42
+ owner: str | None = None
43
+ disposition: str | None = None
44
+ drilldown_searches: list[DrilldownSearch] | None = None
45
+ drilldown_dashboards: list[DrilldownDashboard] | None = None
46
+ annotations: dict[str, list[str]] | None = None
47
+ risk_event_count: int | None = None
48
+ all_risk_objects: list[str] | None = None
49
+ source: list[str] | None = None
50
+ exclude_map_fields: list[str] | None = None
51
+
52
+ def to_dict(self) -> dict[str, Any]:
53
+ """Convert the finding to a dictionary."""
54
+ return self.dict(exclude_none=True)
@@ -0,0 +1,126 @@
1
+ from soar_sdk.models.finding import Finding, DrilldownSearch, DrilldownDashboard
2
+ from pydantic import ValidationError
3
+ import pytest
4
+
5
+
6
+ def test_finding_basic():
7
+ """Test basic Finding with required fields."""
8
+ finding = Finding(
9
+ rule_title="Test Finding",
10
+ rule_description="Test Description",
11
+ security_domain="threat",
12
+ risk_object="test@example.com",
13
+ risk_object_type="user",
14
+ risk_score=85.0,
15
+ )
16
+
17
+ finding_dict = finding.to_dict()
18
+ assert finding_dict["rule_title"] == "Test Finding"
19
+ assert finding_dict["security_domain"] == "threat"
20
+ assert finding_dict["risk_score"] == 85.0
21
+ assert "status" not in finding_dict
22
+
23
+
24
+ def test_finding_with_complex_fields():
25
+ """Test Finding with drilldowns, annotations, and optional fields."""
26
+ drilldown_search = DrilldownSearch(
27
+ name="search_name", search="index=_internal", earliest="-1d", latest="now"
28
+ )
29
+ drilldown_dashboard = DrilldownDashboard(
30
+ dashboard="dash_id", name="Dashboard", tokens=["token1"]
31
+ )
32
+
33
+ finding = Finding(
34
+ rule_title="Risk Threshold Exceeded",
35
+ rule_description="24 hour risk threshold exceeded",
36
+ security_domain="threat",
37
+ risk_object="bad_user@splunk.com",
38
+ risk_object_type="user",
39
+ risk_score=100,
40
+ status="New",
41
+ drilldown_searches=[drilldown_search],
42
+ drilldown_dashboards=[drilldown_dashboard],
43
+ annotations={"mitre_attack": ["T1078", "T1537"]},
44
+ all_risk_objects=["user1@splunk.com", "user2@splunk.com"],
45
+ )
46
+
47
+ finding_dict = finding.to_dict()
48
+ assert finding_dict["status"] == "New"
49
+ assert len(finding_dict["drilldown_searches"]) == 1
50
+ assert finding_dict["drilldown_searches"][0]["name"] == "search_name"
51
+ assert len(finding_dict["drilldown_dashboards"]) == 1
52
+ assert finding_dict["annotations"]["mitre_attack"] == ["T1078", "T1537"]
53
+ assert len(finding_dict["all_risk_objects"]) == 2
54
+
55
+
56
+ def test_finding_validation():
57
+ """Test Finding validation for invalid inputs."""
58
+ # Invalid attribute
59
+ with pytest.raises(ValidationError):
60
+ Finding(
61
+ rule_title="Test",
62
+ rule_description="Test",
63
+ security_domain="threat",
64
+ risk_object="test",
65
+ risk_object_type="user",
66
+ risk_score=50.0,
67
+ not_allowed="fail",
68
+ )
69
+
70
+ # Missing required fields
71
+ with pytest.raises(ValidationError):
72
+ Finding(rule_title="Test")
73
+
74
+ with pytest.raises(ValidationError):
75
+ Finding(
76
+ rule_title="Test",
77
+ rule_description="Test",
78
+ security_domain="threat",
79
+ risk_object="test",
80
+ risk_object_type="user",
81
+ risk_score="invalid",
82
+ )
83
+
84
+
85
+ def test_finding_serialization():
86
+ """Test Finding serialization and deserialization."""
87
+ data = {
88
+ "rule_title": "Test Finding",
89
+ "rule_description": "Test Description",
90
+ "security_domain": "threat",
91
+ "risk_object": "test@example.com",
92
+ "risk_object_type": "user",
93
+ "risk_score": 75.0,
94
+ "status": "New",
95
+ }
96
+ finding = Finding(**data)
97
+ finding_dict = finding.to_dict()
98
+ new_finding = Finding(**finding_dict)
99
+ assert new_finding == finding
100
+
101
+
102
+ def test_drilldown_search():
103
+ """Test DrilldownSearch model."""
104
+ drilldown = DrilldownSearch(
105
+ name="Test", search="index=main", earliest="-24h", latest="now"
106
+ )
107
+ assert drilldown.name == "Test"
108
+ assert drilldown.search == "index=main"
109
+
110
+ with pytest.raises(ValidationError):
111
+ DrilldownSearch(name="Test")
112
+
113
+
114
+ def test_drilldown_dashboard():
115
+ """Test DrilldownDashboard model."""
116
+ dashboard = DrilldownDashboard(dashboard="dash_id", name="Dashboard Name")
117
+ assert dashboard.dashboard == "dash_id"
118
+ assert dashboard.tokens is None
119
+
120
+ dashboard_with_tokens = DrilldownDashboard(
121
+ dashboard="dash_id", name="Dashboard", tokens=["token1", "token2"]
122
+ )
123
+ assert len(dashboard_with_tokens.tokens) == 2
124
+
125
+ with pytest.raises(ValidationError):
126
+ DrilldownDashboard(name="Test")
@@ -1131,7 +1131,7 @@ wheels = [
1131
1131
 
1132
1132
  [[package]]
1133
1133
  name = "splunk-soar-sdk"
1134
- version = "3.0.0"
1134
+ version = "3.1.0"
1135
1135
  source = { editable = "." }
1136
1136
  dependencies = [
1137
1137
  { name = "beautifulsoup4", marker = "(platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" },
@@ -1,49 +0,0 @@
1
- # [3.0.0](https://github.com/phantomcyber/splunk-soar-sdk/compare/2.3.7...3.0.0) (2025-10-27)
2
-
3
-
4
- * feat!: drop sdk py3.9 support + add py3.13 support + update min phantom version to 7.0.0 ([e05c5ab](https://github.com/phantomcyber/splunk-soar-sdk/commit/e05c5abc5a923f02be4ecae9c2ad6ff2c37cb4d9))
5
-
6
-
7
- ### Bug Fixes
8
-
9
- * build with new pydantic version fix ([cfab060](https://github.com/phantomcyber/splunk-soar-sdk/commit/cfab060e34a5fddea3bc8fcb3ac3e247e1d9f64d))
10
- * use system for commitlint to fix node issue on M mac chips ([ff82ba4](https://github.com/phantomcyber/splunk-soar-sdk/commit/ff82ba4c1c3294b0a400ed6cf3891cbd74e3caa9))
11
-
12
-
13
- ### Features
14
-
15
- * pydantic changes to v2 ([5c76f54](https://github.com/phantomcyber/splunk-soar-sdk/commit/5c76f54d706449073df0ca85ad4cbe3af450d49c))
16
-
17
-
18
- ### BREAKING CHANGES
19
-
20
- * Python 3.9 is no longer supported
21
-
22
-
23
-
24
-
25
-
26
- # [3.0.0](https://github.com/phantomcyber/splunk-soar-sdk/compare/2.3.7...3.0.0) (2025-10-27)
27
-
28
-
29
- * feat!: drop sdk py3.9 support + add py3.13 support + update min phantom version to 7.0.0 ([e05c5ab](https://github.com/phantomcyber/splunk-soar-sdk/commit/e05c5abc5a923f02be4ecae9c2ad6ff2c37cb4d9))
30
-
31
-
32
- ### Bug Fixes
33
-
34
- * build with new pydantic version fix ([cfab060](https://github.com/phantomcyber/splunk-soar-sdk/commit/cfab060e34a5fddea3bc8fcb3ac3e247e1d9f64d))
35
- * use system for commitlint to fix node issue on M mac chips ([ff82ba4](https://github.com/phantomcyber/splunk-soar-sdk/commit/ff82ba4c1c3294b0a400ed6cf3891cbd74e3caa9))
36
-
37
-
38
- ### Features
39
-
40
- * pydantic changes to v2 ([5c76f54](https://github.com/phantomcyber/splunk-soar-sdk/commit/5c76f54d706449073df0ca85ad4cbe3af450d49c))
41
-
42
-
43
- ### BREAKING CHANGES
44
-
45
- * Python 3.9 is no longer supported
46
-
47
-
48
-
49
-
@@ -1 +0,0 @@
1
- 3.0.0
File without changes