howler-api 4.0.0.dev1044__tar.gz → 4.0.0.dev1056__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.
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/PKG-INFO +1 -1
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v2/search.py +4 -2
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/helper/search.py +1 -1
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/case.py +7 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/search_service.py +1 -1
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/pyproject.toml +1 -1
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/README.md +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/add_label.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/add_to_bundle.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/add_to_case.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/change_field.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/demote.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/example_plugin.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/prioritization.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/promote.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/remove_from_bundle.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/remove_label.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/actions/transition.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/base.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/socket.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/action.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/analytic.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/auth.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/clue.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/configs.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/dossier.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/help.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/hit.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/notebook.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/overview.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/search.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/template.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/tool.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/user.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/utils/params.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v1/view.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v2/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v2/case.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/api/v2/ingest.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/app.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/README.md +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/classification.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/classification.yml +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/exceptions.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/loader.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/logging/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/logging/audit.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/logging/format.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/net.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/net_static.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/random_user.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/common/swagger.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/config.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/cronjobs/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/cronjobs/action_queue_worker.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/cronjobs/correlation.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/cronjobs/retention.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/cronjobs/view_cleanup.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/README.md +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/bulk.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/collection.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/constants.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/exceptions.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/howler_store.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/operations.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/schemas.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/store.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/support/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/support/build.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/support/schemas.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/types.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/error.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/external/README.md +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/external/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/external/generate_mitre.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/external/generate_tlds.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/external/reindex_data.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/external/wipe_databases.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/gunicorn_config.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/healthz.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/helper/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/helper/azure.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/helper/discover.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/helper/hit.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/helper/oauth.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/helper/workflow.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/helper/ws.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/README.md +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/base.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/charter.txt +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/constants.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/helper.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/howler_enum.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/mixins.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/action.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/analytic.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/aws.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/azure.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/cbs.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/clue.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/config.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/dossier.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/gcp.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/hit.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/howler_data.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/lead.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/localized_label.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/observable.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/overview.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/pivot.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/record.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/template.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/user.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/view.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/random_data.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/randomizer.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/patched.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/plugins/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/plugins/config.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/README.md +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/events.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/set.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/security/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/security/socket.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/security/utils.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/action_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/analytic_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/auth_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/bundle_compat_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/case_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/config_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/correlation_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/docs_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/dossier_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/event_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/hit_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/jwt_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/lucene_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/notebook_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/observable_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/overview_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/template_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/user_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/viewer_service.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/telemetry.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/__init__.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/annotations.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/chunk.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/compat.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/constants.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/dict_utils.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/isotime.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/list_utils.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/lucene.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/path.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/socket_utils.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/str_utils.py +0 -0
- {howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/utils/uid.py +0 -0
|
@@ -117,6 +117,9 @@ def search(indexes: str, **kwargs):
|
|
|
117
117
|
}
|
|
118
118
|
)
|
|
119
119
|
|
|
120
|
+
# NOTE: This means index searches must be either ALL access controlled or none of them havbe access control.
|
|
121
|
+
# Otherwise, the access control requirements on one index will cause the other index to return no items.
|
|
122
|
+
# This is pretty reasonable constraint, as all the relevant, searchable items support classifications.
|
|
120
123
|
if has_access_control(index_list):
|
|
121
124
|
params["access_control"] = user["access_control"]
|
|
122
125
|
|
|
@@ -127,8 +130,7 @@ def search(indexes: str, **kwargs):
|
|
|
127
130
|
return bad_request(err="There was no search query.")
|
|
128
131
|
|
|
129
132
|
metadata = params.pop("metadata", [])
|
|
130
|
-
|
|
131
|
-
result = search_service.search(indexes, query, access_control=access_control, **params)
|
|
133
|
+
result = search_service.search(indexes, query, access_control=params.pop("access_control", None), **params)
|
|
132
134
|
|
|
133
135
|
if metadata and any(idx in index_list for idx in ["hit"]):
|
|
134
136
|
hit_service.augment_metadata(result["items"], metadata, user)
|
|
@@ -5,7 +5,7 @@ from howler.datastore.collection import ESCollection
|
|
|
5
5
|
from howler.odm.models.user import User
|
|
6
6
|
|
|
7
7
|
# List of indices where queries are protected with classification access control
|
|
8
|
-
ACCESS_CONTROLLED_INDICES: set[str] = {"hit"}
|
|
8
|
+
ACCESS_CONTROLLED_INDICES: set[str] = {"hit", "observable", "case"}
|
|
9
9
|
|
|
10
10
|
ADMIN_INDEX_MAP: dict[str, Callable[[], ESCollection]] = {}
|
|
11
11
|
|
|
@@ -2,6 +2,7 @@ from typing import Any, Optional
|
|
|
2
2
|
|
|
3
3
|
from howler import odm
|
|
4
4
|
from howler.common.exceptions import HowlerValueError
|
|
5
|
+
from howler.config import CLASSIFICATION
|
|
5
6
|
from howler.odm.constants import Status
|
|
6
7
|
from howler.odm.mixins import DatastoreMixin
|
|
7
8
|
from howler.utils.compat import StrEnum
|
|
@@ -120,6 +121,12 @@ class CaseEnrichment(odm.Model):
|
|
|
120
121
|
@odm.model(index=True, store=True, description="Case model with path-based items, enrichments, rules, and tasks.")
|
|
121
122
|
class Case(DatastoreMixin["Case"], odm.Model):
|
|
122
123
|
case_id: str = odm.UUID(description="A unique identifier for this case.")
|
|
124
|
+
classification: str = odm.Classification(
|
|
125
|
+
is_user_classification=False,
|
|
126
|
+
copyto="__text__",
|
|
127
|
+
default=CLASSIFICATION.UNRESTRICTED,
|
|
128
|
+
description="Maximum classification for the case",
|
|
129
|
+
)
|
|
123
130
|
title: str = odm.Keyword(description="Case title.")
|
|
124
131
|
summary: str = odm.Text(description="Short case summary.")
|
|
125
132
|
overview: str = odm.Optional(odm.Text(description="Markdown overview of the case."))
|
|
@@ -56,7 +56,7 @@ def _normalize_indexes(indexes: str | list[str]) -> str:
|
|
|
56
56
|
if index in {"*", "_all"} or "-" in index or "*" in index:
|
|
57
57
|
normalized_indexes.append(index)
|
|
58
58
|
else:
|
|
59
|
-
normalized_indexes.append(f"{APP_NAME}-{index}
|
|
59
|
+
normalized_indexes.append(f"{APP_NAME}-{index}")
|
|
60
60
|
|
|
61
61
|
return ",".join(normalized_indexes)
|
|
62
62
|
|
|
@@ -152,7 +152,7 @@ suppress-none-returning = true
|
|
|
152
152
|
[tool.poetry]
|
|
153
153
|
package-mode = true
|
|
154
154
|
name = "howler-api"
|
|
155
|
-
version = "4.0.0.
|
|
155
|
+
version = "4.0.0.dev1056"
|
|
156
156
|
description = "Howler - API server"
|
|
157
157
|
authors = [
|
|
158
158
|
"Canadian Centre for Cyber Security <howler@cyber.gc.ca>",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/cronjobs/action_queue_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/datastore/migrations/fix_process.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/external/generate_sigma_rules.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/autonomous_system.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/code_signature.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/odm/models/ecs/vulnerability.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/__init__.py
RENAMED
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/comms.py
RENAMED
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/multi.py
RENAMED
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/named.py
RENAMED
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/queues/priority.py
RENAMED
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/remote/datatypes/user_quota_tracker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/bundle_compat_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1044 → howler_api-4.0.0.dev1056}/howler/services/correlation_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|