howler-api 2.10.0.dev183__tar.gz → 2.11.0.dev185__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-2.10.0.dev183 → howler_api-2.11.0.dev185}/PKG-INFO +1 -1
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/search.py +69 -8
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/pyproject.toml +1 -1
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/README.md +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/add_label.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/add_to_bundle.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/change_field.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/demote.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/example_plugin.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/prioritization.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/promote.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/remove_from_bundle.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/remove_label.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/actions/transition.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/base.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/socket.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/action.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/analytic.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/auth.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/borealis.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/configs.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/dossier.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/help.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/hit.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/notebook.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/overview.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/template.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/tool.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/user.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/api/v1/view.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/app.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/README.md +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/classification.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/classification.yml +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/exceptions.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/hexdump.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/iprange.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/loader.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/logging/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/logging/audit.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/logging/format.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/net.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/net_static.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/random_user.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/common/swagger.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/config.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/cronjobs/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/cronjobs/retention.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/cronjobs/rules.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/README.md +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/bulk.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/collection.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/constants.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/exceptions.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/howler_store.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/operations.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/schemas.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/store.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/support/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/support/build.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/support/schemas.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/datastore/types.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/error.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/external/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/external/generate_mitre.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/external/generate_tlds.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/external/reindex_data.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/external/wipe_databases.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/gunicorn_config.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/healthz.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/helper/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/helper/azure.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/helper/discover.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/helper/hit.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/helper/oauth.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/helper/search.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/helper/workflow.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/helper/ws.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/README.md +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/base.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/charter.txt +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/helper.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/howler_enum.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/action.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/analytic.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/aws.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/azure.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/cbs.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/config.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/dossier.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/gcp.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/hit.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/howler_data.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/lead.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/localized_label.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/overview.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/pivot.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/template.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/user.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/view.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/random_data.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/randomizer.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/patched.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/plugins/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/plugins/config.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/README.md +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/events.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/set.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/security/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/security/socket.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/security/utils.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/action_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/analytic_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/auth_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/config_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/dossier_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/event_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/hit_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/jwt_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/lucene_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/notebook_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/services/user_service.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/__init__.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/annotations.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/chunk.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/dict_utils.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/isotime.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/list_utils.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/lucene.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/path.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/socket_utils.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/str_utils.py +0 -0
- {howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/utils/uid.py +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Union
|
|
1
|
+
from typing import Any, Union
|
|
2
2
|
|
|
3
3
|
from elasticsearch import BadRequestError
|
|
4
4
|
from flask import request
|
|
@@ -12,12 +12,7 @@ from howler.common.loader import datastore
|
|
|
12
12
|
from howler.common.logging import get_logger
|
|
13
13
|
from howler.common.swagger import generate_swagger_docs
|
|
14
14
|
from howler.datastore.exceptions import SearchException
|
|
15
|
-
from howler.helper.search import
|
|
16
|
-
get_collection,
|
|
17
|
-
get_default_sort,
|
|
18
|
-
has_access_control,
|
|
19
|
-
list_all_fields,
|
|
20
|
-
)
|
|
15
|
+
from howler.helper.search import get_collection, get_default_sort, has_access_control, list_all_fields
|
|
21
16
|
from howler.security import api_login
|
|
22
17
|
|
|
23
18
|
SUB_API = "search"
|
|
@@ -458,10 +453,76 @@ def count(index, **kwargs):
|
|
|
458
453
|
return bad_request(err=f"SearchException: {e}")
|
|
459
454
|
|
|
460
455
|
|
|
456
|
+
@generate_swagger_docs()
|
|
457
|
+
@search_api.route("/facet/<index>", methods=["GET", "POST"])
|
|
458
|
+
@api_login(required_priv=["R"])
|
|
459
|
+
def facet(index, **kwargs):
|
|
460
|
+
"""Perform field analysis on the selected fields. (Also known as facetting in lucene).
|
|
461
|
+
|
|
462
|
+
This essentially counts the number of instances a field is seen with each specific
|
|
463
|
+
values where the documents matches the specified queries.
|
|
464
|
+
|
|
465
|
+
Variables:
|
|
466
|
+
index => Index to search in (hit, user,...)
|
|
467
|
+
|
|
468
|
+
Optional Arguments:
|
|
469
|
+
query => Query to search for
|
|
470
|
+
mincount => Minimum item count for the fieldvalue to be returned
|
|
471
|
+
rows => The max number of fieldvalues to return
|
|
472
|
+
filters => Additional query to limit to output
|
|
473
|
+
fields => Field to analyse
|
|
474
|
+
|
|
475
|
+
Data Block:
|
|
476
|
+
# Note that the data block is for POST requests only!
|
|
477
|
+
{"fields": ["howler.id", ...]
|
|
478
|
+
"query": "id:*",
|
|
479
|
+
"mincount": "10",
|
|
480
|
+
"rows": "10",
|
|
481
|
+
"filters": ['fq']}
|
|
482
|
+
|
|
483
|
+
Result Example:
|
|
484
|
+
{
|
|
485
|
+
"howler.id": { # Facetting results
|
|
486
|
+
"value_0": 2,
|
|
487
|
+
...
|
|
488
|
+
"value_N": 19,
|
|
489
|
+
},
|
|
490
|
+
...
|
|
491
|
+
}
|
|
492
|
+
"""
|
|
493
|
+
user = kwargs["user"]
|
|
494
|
+
collection = get_collection(index, user)
|
|
495
|
+
if collection is None:
|
|
496
|
+
return bad_request(err=f"Not a valid index to search in: {index}")
|
|
497
|
+
|
|
498
|
+
fields = ["query", "mincount", "rows"]
|
|
499
|
+
multi_fields = ["filters", "fields"]
|
|
500
|
+
|
|
501
|
+
params = generate_params(request, fields, multi_fields)[0]
|
|
502
|
+
|
|
503
|
+
if has_access_control(index):
|
|
504
|
+
params.update({"access_control": user["access_control"]})
|
|
505
|
+
|
|
506
|
+
try:
|
|
507
|
+
fields = params.pop("fields")
|
|
508
|
+
facet_result: dict[str, dict[str, Any]] = {}
|
|
509
|
+
for field in fields:
|
|
510
|
+
if field not in collection().fields():
|
|
511
|
+
logger.warning("Invalid field %s requested for faceting, skipping", field)
|
|
512
|
+
continue
|
|
513
|
+
|
|
514
|
+
facet_result[field] = collection().facet(field, **params)
|
|
515
|
+
|
|
516
|
+
return ok(facet_result)
|
|
517
|
+
except (SearchException, BadRequestError) as e:
|
|
518
|
+
logger.error("SearchException: %s", str(e), exc_info=True)
|
|
519
|
+
return bad_request(err=f"SearchException: {e}")
|
|
520
|
+
|
|
521
|
+
|
|
461
522
|
@generate_swagger_docs()
|
|
462
523
|
@search_api.route("/facet/<index>/<field>", methods=["GET", "POST"])
|
|
463
524
|
@api_login(required_priv=["R"])
|
|
464
|
-
def
|
|
525
|
+
def facet_field(index, field, **kwargs):
|
|
465
526
|
"""Perform field analysis on the selected field. (Also known as facetting in lucene).
|
|
466
527
|
|
|
467
528
|
This essentially counts the number of instances a field is seen with each specific
|
|
@@ -148,7 +148,7 @@ suppress-none-returning = true
|
|
|
148
148
|
[tool.poetry]
|
|
149
149
|
package-mode = true
|
|
150
150
|
name = "howler-api"
|
|
151
|
-
version = "2.
|
|
151
|
+
version = "2.11.0.dev185"
|
|
152
152
|
description = "Howler - API server"
|
|
153
153
|
authors = [
|
|
154
154
|
"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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/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
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/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
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/odm/models/ecs/autonomous_system.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/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-2.10.0.dev183 → howler_api-2.11.0.dev185}/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
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/__init__.py
RENAMED
|
File without changes
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/comms.py
RENAMED
|
File without changes
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/multi.py
RENAMED
|
File without changes
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/named.py
RENAMED
|
File without changes
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/howler/remote/datatypes/queues/priority.py
RENAMED
|
File without changes
|
|
File without changes
|
{howler_api-2.10.0.dev183 → howler_api-2.11.0.dev185}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|