howler-api 3.3.0.dev604__tar.gz → 3.3.0.dev644__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 (198) hide show
  1. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/PKG-INFO +1 -1
  2. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/dossier.py +1 -1
  3. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/search.py +2 -1
  4. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/dossier_service.py +4 -2
  5. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/hit_service.py +4 -4
  6. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/lucene_service.py +5 -3
  7. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/pyproject.toml +1 -1
  8. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/README.md +0 -0
  9. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/__init__.py +0 -0
  10. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/__init__.py +0 -0
  11. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/add_label.py +0 -0
  12. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/add_to_bundle.py +0 -0
  13. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/change_field.py +0 -0
  14. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/demote.py +0 -0
  15. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/example_plugin.py +0 -0
  16. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/prioritization.py +0 -0
  17. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/promote.py +0 -0
  18. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/remove_from_bundle.py +0 -0
  19. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/remove_label.py +0 -0
  20. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/actions/transition.py +0 -0
  21. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/__init__.py +0 -0
  22. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/base.py +0 -0
  23. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/socket.py +0 -0
  24. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/__init__.py +0 -0
  25. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/action.py +0 -0
  26. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/analytic.py +0 -0
  27. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/auth.py +0 -0
  28. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/clue.py +0 -0
  29. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/configs.py +0 -0
  30. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/help.py +0 -0
  31. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/hit.py +0 -0
  32. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/notebook.py +0 -0
  33. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/overview.py +0 -0
  34. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/template.py +0 -0
  35. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/tool.py +0 -0
  36. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/user.py +0 -0
  37. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/utils/__init__.py +0 -0
  38. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/utils/etag.py +0 -0
  39. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/api/v1/view.py +0 -0
  40. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/app.py +0 -0
  41. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/README.md +0 -0
  42. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/__init__.py +0 -0
  43. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/classification.py +0 -0
  44. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/classification.yml +0 -0
  45. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/exceptions.py +0 -0
  46. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/loader.py +0 -0
  47. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/logging/__init__.py +0 -0
  48. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/logging/audit.py +0 -0
  49. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/logging/format.py +0 -0
  50. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/net.py +0 -0
  51. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/net_static.py +0 -0
  52. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/random_user.py +0 -0
  53. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/common/swagger.py +0 -0
  54. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/config.py +0 -0
  55. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/cronjobs/__init__.py +0 -0
  56. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/cronjobs/retention.py +0 -0
  57. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/cronjobs/rules.py +0 -0
  58. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/cronjobs/view_cleanup.py +0 -0
  59. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/README.md +0 -0
  60. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/__init__.py +0 -0
  61. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/bulk.py +0 -0
  62. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/collection.py +0 -0
  63. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/constants.py +0 -0
  64. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/exceptions.py +0 -0
  65. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/howler_store.py +0 -0
  66. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/migrations/fix_process.py +0 -0
  67. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/operations.py +0 -0
  68. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/schemas.py +0 -0
  69. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/store.py +0 -0
  70. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/support/__init__.py +0 -0
  71. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/support/build.py +0 -0
  72. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/support/schemas.py +0 -0
  73. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/datastore/types.py +0 -0
  74. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/error.py +0 -0
  75. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/external/__init__.py +0 -0
  76. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/external/generate_mitre.py +0 -0
  77. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/external/generate_sigma_rules.py +0 -0
  78. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/external/generate_tlds.py +0 -0
  79. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/external/reindex_data.py +0 -0
  80. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/external/wipe_databases.py +0 -0
  81. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/gunicorn_config.py +0 -0
  82. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/healthz.py +0 -0
  83. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/helper/__init__.py +0 -0
  84. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/helper/azure.py +0 -0
  85. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/helper/discover.py +0 -0
  86. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/helper/hit.py +0 -0
  87. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/helper/oauth.py +0 -0
  88. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/helper/search.py +0 -0
  89. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/helper/workflow.py +0 -0
  90. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/helper/ws.py +0 -0
  91. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/README.md +0 -0
  92. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/__init__.py +0 -0
  93. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/base.py +0 -0
  94. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/charter.txt +0 -0
  95. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/helper.py +0 -0
  96. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/howler_enum.py +0 -0
  97. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/__init__.py +0 -0
  98. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/action.py +0 -0
  99. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/analytic.py +0 -0
  100. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/assemblyline.py +0 -0
  101. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/aws.py +0 -0
  102. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/azure.py +0 -0
  103. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/cbs.py +0 -0
  104. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/clue.py +0 -0
  105. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/config.py +0 -0
  106. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/dossier.py +0 -0
  107. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/__init__.py +0 -0
  108. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/agent.py +0 -0
  109. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/autonomous_system.py +0 -0
  110. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/client.py +0 -0
  111. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/cloud.py +0 -0
  112. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/code_signature.py +0 -0
  113. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/container.py +0 -0
  114. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/dns.py +0 -0
  115. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/egress.py +0 -0
  116. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/elf.py +0 -0
  117. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/email.py +0 -0
  118. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/error.py +0 -0
  119. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/event.py +0 -0
  120. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/faas.py +0 -0
  121. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/file.py +0 -0
  122. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/geo.py +0 -0
  123. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/group.py +0 -0
  124. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/hash.py +0 -0
  125. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/host.py +0 -0
  126. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/http.py +0 -0
  127. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/ingress.py +0 -0
  128. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/interface.py +0 -0
  129. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/network.py +0 -0
  130. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/observer.py +0 -0
  131. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/organization.py +0 -0
  132. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/os.py +0 -0
  133. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/pe.py +0 -0
  134. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/process.py +0 -0
  135. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/registry.py +0 -0
  136. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/related.py +0 -0
  137. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/rule.py +0 -0
  138. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/server.py +0 -0
  139. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/threat.py +0 -0
  140. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/tls.py +0 -0
  141. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/url.py +0 -0
  142. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/user.py +0 -0
  143. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/user_agent.py +0 -0
  144. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/ecs/vulnerability.py +0 -0
  145. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/gcp.py +0 -0
  146. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/hit.py +0 -0
  147. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/howler_data.py +0 -0
  148. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/lead.py +0 -0
  149. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/localized_label.py +0 -0
  150. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/overview.py +0 -0
  151. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/pivot.py +0 -0
  152. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/template.py +0 -0
  153. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/user.py +0 -0
  154. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/models/view.py +0 -0
  155. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/random_data.py +0 -0
  156. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/odm/randomizer.py +0 -0
  157. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/patched.py +0 -0
  158. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/plugins/__init__.py +0 -0
  159. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/plugins/config.py +0 -0
  160. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/__init__.py +0 -0
  161. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/README.md +0 -0
  162. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/__init__.py +0 -0
  163. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/counters.py +0 -0
  164. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/events.py +0 -0
  165. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/hash.py +0 -0
  166. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/lock.py +0 -0
  167. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/queues/__init__.py +0 -0
  168. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/queues/comms.py +0 -0
  169. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/queues/multi.py +0 -0
  170. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/queues/named.py +0 -0
  171. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/queues/priority.py +0 -0
  172. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/set.py +0 -0
  173. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/remote/datatypes/user_quota_tracker.py +0 -0
  174. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/security/__init__.py +0 -0
  175. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/security/socket.py +0 -0
  176. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/security/utils.py +0 -0
  177. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/__init__.py +0 -0
  178. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/action_service.py +0 -0
  179. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/analytic_service.py +0 -0
  180. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/auth_service.py +0 -0
  181. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/config_service.py +0 -0
  182. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/event_service.py +0 -0
  183. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/jwt_service.py +0 -0
  184. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/notebook_service.py +0 -0
  185. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/overview_service.py +0 -0
  186. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/template_service.py +0 -0
  187. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/services/user_service.py +0 -0
  188. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/__init__.py +0 -0
  189. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/annotations.py +0 -0
  190. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/chunk.py +0 -0
  191. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/dict_utils.py +0 -0
  192. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/isotime.py +0 -0
  193. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/list_utils.py +0 -0
  194. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/lucene.py +0 -0
  195. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/path.py +0 -0
  196. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/socket_utils.py +0 -0
  197. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/str_utils.py +0 -0
  198. {howler_api-3.3.0.dev604 → howler_api-3.3.0.dev644}/howler/utils/uid.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: howler-api
3
- Version: 3.3.0.dev604
3
+ Version: 3.3.0.dev644
4
4
  Summary: Howler - API server
5
5
  License: MIT
6
6
  Keywords: howler,alerting,gc,canada,cse-cst,cse,cst,cyber,cccs
@@ -139,7 +139,7 @@ def get_dossier_for_hit(id: str, user: User, **kwargs):
139
139
 
140
140
  hit = response["items"][0]
141
141
 
142
- return ok(dossier_service.get_matching_dossiers(hit))
142
+ return ok(dossier_service.get_matching_dossiers(hit, username=user.uname))
143
143
  except ValueError as e:
144
144
  return bad_request(err=str(e))
145
145
 
@@ -16,6 +16,7 @@ from howler.common.logging import get_logger
16
16
  from howler.common.swagger import generate_swagger_docs
17
17
  from howler.datastore.exceptions import SearchException
18
18
  from howler.helper.search import get_collection, get_default_sort, has_access_control, list_all_fields
19
+ from howler.odm.models.user import User
19
20
  from howler.security import api_login
20
21
  from howler.services import hit_service, lucene_service
21
22
 
@@ -100,7 +101,7 @@ def search(index, **kwargs):
100
101
  "next_deep_paging_id": "asX3f...342", # ID to pass back for the next page during deep paging
101
102
  "items": []} # List of results
102
103
  """
103
- user = kwargs["user"]
104
+ user: User = kwargs["user"]
104
105
  collection = get_collection(index, user)
105
106
  default_sort = get_default_sort(index, user)
106
107
 
@@ -235,7 +235,9 @@ def update_dossier(dossier_id: str, dossier_data: dict[str, Any], user: User) ->
235
235
  raise InvalidDataException("We were unable to update the dossier.", cause=e) from e
236
236
 
237
237
 
238
- def get_matching_dossiers(hit: dict[str, Any], dossiers: list[dict[str, Any]] | None = None):
238
+ def get_matching_dossiers(
239
+ hit: dict[str, Any], dossiers: list[dict[str, Any]] | None = None, username: str | None = None
240
+ ):
239
241
  """Get a list of dossiers that match a specific security alert/hit.
240
242
 
241
243
  This function evaluates each dossier's query against the provided hit data
@@ -256,7 +258,7 @@ def get_matching_dossiers(hit: dict[str, Any], dossiers: list[dict[str, Any]] |
256
258
  # Retrieve all dossiers if none provided
257
259
  if dossiers is None:
258
260
  dossiers = datastore().dossier.search(
259
- "dossier_id:*",
261
+ f"type:global OR owner:{username}" if username else "type:global",
260
262
  as_obj=False,
261
263
  # TODO: Eventually implement caching here
262
264
  rows=1000,
@@ -880,7 +880,7 @@ def __match_metadata(candidates: list[dict[str, Any]], hit: dict[str, Any]) -> O
880
880
  return sorted(matching_candidates, key=functools.cmp_to_key(__compare_metadata))[0]
881
881
 
882
882
 
883
- def augment_metadata(data: list[dict[str, Any]] | dict[str, Any] | None, metadata: list[str], user: dict[str, Any]): # noqa: C901
883
+ def augment_metadata(data: list[dict[str, Any]] | dict[str, Any] | None, metadata: list[str], user: User): # noqa: C901
884
884
  """Augment hit search results with additional metadata.
885
885
 
886
886
  This function enriches hit data by adding related information such as templates,
@@ -909,7 +909,7 @@ def augment_metadata(data: list[dict[str, Any]] | dict[str, Any] | None, metadat
909
909
  logger.debug("Augmenting %s hits with %s", len(hits), ",".join(metadata))
910
910
 
911
911
  if "template" in metadata:
912
- template_candidates = template_service.get_matching_templates(hits, as_odm=False, uname=user["uname"])
912
+ template_candidates = template_service.get_matching_templates(hits, as_odm=False, uname=user.uname)
913
913
 
914
914
  logger.debug("\tRetrieved %s matching templates", len(template_candidates))
915
915
 
@@ -942,11 +942,11 @@ def augment_metadata(data: list[dict[str, Any]] | dict[str, Any] | None, metadat
942
942
 
943
943
  if "dossiers" in metadata:
944
944
  dossiers: list[dict[str, Any]] = datastore().dossier.search(
945
- "dossier_id:*",
945
+ f"type:global OR owner:{user.uname}",
946
946
  as_obj=False,
947
947
  # TODO: Eventually implement caching here
948
948
  rows=1000,
949
949
  )["items"]
950
950
 
951
951
  for hit in hits:
952
- hit["__dossiers"] = dossier_service.get_matching_dossiers(hit, dossiers)
952
+ hit["__dossiers"] = dossier_service.get_matching_dossiers(hit, dossiers, username=user.uname)
@@ -60,12 +60,14 @@ class LuceneProcessor(TreeVisitor):
60
60
  for child in node.children:
61
61
  child_context = self.child_context(node, child, context)
62
62
  for result in self.visit_iter(child, context=child_context):
63
- # If we run across a MUST or MUST NOT (plus, probhit) object and the value doesn't match, we immediately
64
- # shortcircuit and return false.
63
+ # If we run across a MUST or MUST NOT (plus, prohibit) object and the value doesn't match, we
64
+ # immediately shortcircuit and return false.
65
+ # NOTE: visit_prohibit already negates the inner result, so a violated MUST NOT arrives here as
66
+ # False (not True). We therefore short-circuit on `not result` rather than `result`.
65
67
  if isinstance(child, Plus) and not result:
66
68
  yield False
67
69
  return
68
- elif isinstance(child, Prohibit) and result:
70
+ elif isinstance(child, Prohibit) and not result:
69
71
  yield False
70
72
  return
71
73
 
@@ -152,7 +152,7 @@ suppress-none-returning = true
152
152
  [tool.poetry]
153
153
  package-mode = true
154
154
  name = "howler-api"
155
- version = "3.3.0.dev604"
155
+ version = "3.3.0.dev644"
156
156
  description = "Howler - API server"
157
157
  authors = [
158
158
  "Canadian Centre for Cyber Security <howler@cyber.gc.ca>",