howler-api 4.0.0.dev1291__tar.gz → 4.0.0.dev1297__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.dev1291 → howler_api-4.0.0.dev1297}/PKG-INFO +1 -1
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/howler_data.py +15 -15
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/hit_service.py +12 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/pyproject.toml +1 -1
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/README.md +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/add_label.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/add_to_bundle.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/add_to_case.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/change_field.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/demote.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/example_plugin.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/prioritization.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/promote.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/remove_from_bundle.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/remove_label.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/actions/transition.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/base.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/socket.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/action.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/analytic.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/auth.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/clue.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/configs.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/dossier.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/help.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/hit.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/notebook.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/overview.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/search.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/template.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/tool.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/user.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/utils/params.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v1/view.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v2/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v2/case.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v2/fuzzy.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v2/ingest.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/api/v2/search.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/app.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/README.md +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/classification.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/classification.yml +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/exceptions.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/loader.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/logging/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/logging/audit.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/logging/format.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/net.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/net_static.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/random_user.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/common/swagger.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/config.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/cronjobs/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/cronjobs/action_queue_worker.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/cronjobs/correlation.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/cronjobs/retention.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/cronjobs/view_cleanup.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/README.md +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/bulk.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/collection.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/constants.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/exceptions.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/howler_store.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/operations.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/schemas.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/store.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/support/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/support/build.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/support/schemas.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/datastore/types.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/error.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/external/README.md +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/external/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/external/generate_mitre.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/external/generate_tlds.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/external/reindex_data.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/external/wipe_databases.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/gunicorn_config.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/healthz.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/helper/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/helper/azure.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/helper/discover.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/helper/hit.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/helper/oauth.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/helper/search.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/helper/workflow.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/helper/ws.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/README.md +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/base.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/charter.txt +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/constants.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/helper.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/howler_enum.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/mixins.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/action.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/analytic.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/aws.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/azure.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/case.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/cbs.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/clue.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/config.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/dossier.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/event.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/gcp.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/hit.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/lead.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/localized_label.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/overview.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/pivot.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/record.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/template.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/user.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/view.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/random_data.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/randomizer.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/patched.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/plugins/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/plugins/config.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/README.md +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/events.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/set.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/security/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/security/socket.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/security/utils.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/action_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/analytic_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/auth_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/bundle_compat_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/case_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/comms_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/config_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/correlation_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/docs_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/dossier_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/event_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/fuzzy_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/jwt_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/lucene_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/notebook_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/overview_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/search_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/template_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/user_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/services/viewer_service.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/telemetry.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/__init__.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/annotations.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/chunk.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/compat.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/constants.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/dict_utils.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/indexes.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/isotime.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/list_utils.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/lucene.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/net_utils.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/path.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/socket_utils.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/str_utils.py +0 -0
- {howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/utils/uid.py +0 -0
|
@@ -131,17 +131,17 @@ class Log(odm.Model):
|
|
|
131
131
|
|
|
132
132
|
@odm.model(index=True, store=True, description="Hit outline header.")
|
|
133
133
|
class Header(odm.Model):
|
|
134
|
-
threat:
|
|
135
|
-
target:
|
|
134
|
+
threat: str | None = odm.Optional(odm.Keyword(description="The IP of the threat."))
|
|
135
|
+
target: str | None = odm.Optional(odm.Keyword(description="The target of the hit."))
|
|
136
136
|
indicators: list[str] = odm.List(odm.Keyword(description="Indicators of the hit."), default=[])
|
|
137
|
-
summary:
|
|
137
|
+
summary: str | None = odm.Optional(odm.Keyword(description="Summary of the hit."))
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
@odm.model(index=True, store=True, description="Fields describing the location where this alert has been retained.")
|
|
141
141
|
class Incident(odm.Model):
|
|
142
142
|
platform: str = odm.Keyword(description="The name of the platform for this incident.")
|
|
143
|
-
incident_id:
|
|
144
|
-
url:
|
|
143
|
+
incident_id: str | None = odm.Keyword(description="The ID of the incident.", optional=True)
|
|
144
|
+
url: str | None = odm.Keyword(description="The url where the incident can be found.", optional=True)
|
|
145
145
|
|
|
146
146
|
|
|
147
147
|
@odm.model(index=True, store=True, description="Labels for the hit")
|
|
@@ -177,7 +177,7 @@ DEFAULT_ASSIGNMENT = "unassigned"
|
|
|
177
177
|
class HowlerData(odm.Model):
|
|
178
178
|
id: str = odm.UUID(description="A UUID for this hit.")
|
|
179
179
|
analytic: str = odm.CaseInsensitiveKeyword(description="Title of the analytic.")
|
|
180
|
-
assignment:
|
|
180
|
+
assignment: str = odm.Keyword(
|
|
181
181
|
description="Unique identifier of the assigned user.",
|
|
182
182
|
default=DEFAULT_ASSIGNMENT,
|
|
183
183
|
)
|
|
@@ -191,7 +191,7 @@ class HowlerData(odm.Model):
|
|
|
191
191
|
default=[],
|
|
192
192
|
description="A list of links associated with this hit.",
|
|
193
193
|
)
|
|
194
|
-
detection:
|
|
194
|
+
detection: str | None = odm.Optional(
|
|
195
195
|
odm.CaseInsensitiveKeyword(description="The detection that produced this hit.")
|
|
196
196
|
)
|
|
197
197
|
hash: str = odm.HowlerHash(
|
|
@@ -219,13 +219,13 @@ class HowlerData(odm.Model):
|
|
|
219
219
|
score: Optional[float] = odm.Optional(
|
|
220
220
|
odm.Float(description="A score assigned by an enrichment to help prioritize triage.", default=0)
|
|
221
221
|
)
|
|
222
|
-
status = odm.Enum(values=Status, default=Status.OPEN, description="Status of the hit.")
|
|
223
|
-
scrutiny = odm.Enum(
|
|
222
|
+
status: str = odm.Enum(values=Status, default=Status.OPEN, description="Status of the hit.")
|
|
223
|
+
scrutiny: str = odm.Enum(
|
|
224
224
|
values=Scrutiny,
|
|
225
225
|
default=Scrutiny.UNSEEN,
|
|
226
226
|
description="Level of scrutiny done to this hit.",
|
|
227
227
|
)
|
|
228
|
-
escalation = odm.Enum(
|
|
228
|
+
escalation: str = odm.Enum(
|
|
229
229
|
values=Escalation,
|
|
230
230
|
default=Escalation.HIT,
|
|
231
231
|
description="Level of escalation of this hit.",
|
|
@@ -235,8 +235,8 @@ class HowlerData(odm.Model):
|
|
|
235
235
|
description="User selected time for hit expiry",
|
|
236
236
|
)
|
|
237
237
|
)
|
|
238
|
-
assessment:
|
|
239
|
-
rationale:
|
|
238
|
+
assessment: str | None = odm.Optional(odm.Enum(values=Assessment, description="Assessment of the hit."))
|
|
239
|
+
rationale: str | None = odm.Optional(
|
|
240
240
|
odm.Keyword(
|
|
241
241
|
description=(
|
|
242
242
|
"The rationale behind the hit assessment. Allows it to be understood and verified by other analysts."
|
|
@@ -254,9 +254,9 @@ class HowlerData(odm.Model):
|
|
|
254
254
|
default=[],
|
|
255
255
|
description="A list of changes to the hit with timestamps and attribution.",
|
|
256
256
|
)
|
|
257
|
-
monitored:
|
|
258
|
-
reported:
|
|
259
|
-
mitigated:
|
|
257
|
+
monitored: str | None = odm.Optional(odm.Keyword(description="Link to the incident monitoring dashboard."))
|
|
258
|
+
reported: str | None = odm.Optional(odm.Keyword(description="Link to the incident report."))
|
|
259
|
+
mitigated: str | None = odm.Optional(odm.Keyword(description="Link to the mitigation record (tool dependent)."))
|
|
260
260
|
outline: Optional[Header] = odm.Optional(odm.Compound(Header), description="The user specified header of the hit")
|
|
261
261
|
incidents: list[Incident] = odm.List(
|
|
262
262
|
odm.Compound(Incident), default=[], description="Fields describing an incident associated with this alert."
|
|
@@ -317,6 +317,18 @@ def convert_hit( # noqa: C901
|
|
|
317
317
|
"See howler's documentation for more information."
|
|
318
318
|
)
|
|
319
319
|
|
|
320
|
+
if odm.howler.assessment:
|
|
321
|
+
target_escalation = AssessmentEscalationMap[odm.howler.assessment]
|
|
322
|
+
if odm.howler.escalation != target_escalation:
|
|
323
|
+
warnings.append(
|
|
324
|
+
f"Hits with assessment {odm.howler.assessment} must also have escalation set to {target_escalation}."
|
|
325
|
+
)
|
|
326
|
+
odm.howler.escalation = str(target_escalation)
|
|
327
|
+
|
|
328
|
+
if odm.howler.escalation in [Escalation.MISS, Escalation.EVIDENCE] and odm.howler.status != Status.RESOLVED:
|
|
329
|
+
warnings.append("Hits with escalation miss or evidence must also have their status set to resolved.")
|
|
330
|
+
odm.howler.status = Status.RESOLVED.value
|
|
331
|
+
|
|
320
332
|
if odm.event:
|
|
321
333
|
odm.event.id = odm.howler.id
|
|
322
334
|
if not odm.event.created:
|
|
@@ -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.dev1297"
|
|
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
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/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.dev1291 → howler_api-4.0.0.dev1297}/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.dev1291 → howler_api-4.0.0.dev1297}/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
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/odm/models/ecs/autonomous_system.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/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.dev1291 → howler_api-4.0.0.dev1297}/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
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/__init__.py
RENAMED
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/comms.py
RENAMED
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/multi.py
RENAMED
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/named.py
RENAMED
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/howler/remote/datatypes/queues/priority.py
RENAMED
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/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.dev1291 → howler_api-4.0.0.dev1297}/howler/services/bundle_compat_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1291 → howler_api-4.0.0.dev1297}/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
|
|
File without changes
|
|
File without changes
|