howler-api 4.1.0.dev1577__tar.gz → 4.1.0.dev1582__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.1.0.dev1577 → howler_api-4.1.0.dev1582}/PKG-INFO +1 -1
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/action.py +29 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/action_service.py +36 -1
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/pyproject.toml +1 -1
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/README.md +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/add_label.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/add_to_bundle.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/add_to_case.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/change_field.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/demote.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/example_plugin.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/prioritization.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/promote.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/remove_from_bundle.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/remove_label.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/actions/transition.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/base.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/socket.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/analytic.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/auth.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/clue.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/configs.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/dossier.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/help.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/hit.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/notebook.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/overview.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/search.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/template.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/tool.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/user.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/utils/params.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v1/view.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v2/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v2/case.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v2/fuzzy.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v2/ingest.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/api/v2/search.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/app.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/README.md +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/classification.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/classification.yml +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/exceptions.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/loader.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/logging/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/logging/audit.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/logging/format.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/net.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/net_static.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/random_user.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/common/swagger.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/config.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/cronjobs/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/cronjobs/action_queue_worker.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/cronjobs/correlation.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/cronjobs/retention.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/cronjobs/view_cleanup.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/README.md +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/bulk.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/collection.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/constants.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/exceptions.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/howler_store.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/operations.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/schemas.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/store.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/support/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/support/build.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/support/schemas.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/types.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/datastore/utils.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/error.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/external/README.md +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/external/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/external/check_duplicates.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/external/generate_mitre.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/external/generate_tlds.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/external/reindex_data.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/external/wipe_databases.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/gunicorn_config.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/healthz.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/helper/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/helper/azure.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/helper/discover.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/helper/hit.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/helper/oauth.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/helper/search.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/helper/workflow.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/helper/ws.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/README.md +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/base.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/charter.txt +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/constants.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/helper.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/howler_enum.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/mixins.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/action.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/analytic.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/aws.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/azure.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/case.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/cbs.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/clue.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/config.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/dossier.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/event.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/gcp.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/hit.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/howler_data.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/lead.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/localized_label.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/overview.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/pivot.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/record.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/template.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/user.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/view.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/random_data.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/randomizer.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/patched.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/plugins/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/plugins/config.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/README.md +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/events.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/set.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/security/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/security/login.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/security/socket.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/security/utils.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/analytic_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/auth_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/bundle_compat_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/case_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/comms_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/config_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/correlation_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/docs_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/dossier_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/event_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/fuzzy_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/hit_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/jwt_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/lucene_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/notebook_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/overview_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/search_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/template_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/user_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/viewer_service.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/telemetry.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/__init__.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/annotations.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/chunk.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/compat.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/constants.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/dict_utils.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/indexes.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/isotime.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/list_utils.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/lucene.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/net_utils.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/path.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/socket_utils.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/str_utils.py +0 -0
- {howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/utils/uid.py +0 -0
|
@@ -4,6 +4,7 @@ from flask import Response, request
|
|
|
4
4
|
|
|
5
5
|
import howler.actions as actions
|
|
6
6
|
from howler.api import bad_request, created, forbidden, internal_error, make_subapi_blueprint, no_content, not_found, ok
|
|
7
|
+
from howler.api.v1.utils.etag import add_etag
|
|
7
8
|
from howler.api.v1.utils.params import parse_parameters, parse_refresh
|
|
8
9
|
from howler.common.exceptions import HowlerException
|
|
9
10
|
from howler.common.loader import datastore
|
|
@@ -46,6 +47,34 @@ def get_actions(**_) -> Response:
|
|
|
46
47
|
return ok(datastore().action.search("*:*", as_obj=False)["items"])
|
|
47
48
|
|
|
48
49
|
|
|
50
|
+
@generate_swagger_docs()
|
|
51
|
+
@action_api.route("/<id>", methods=["GET"])
|
|
52
|
+
@api_login(
|
|
53
|
+
audit=True,
|
|
54
|
+
check_xsrf_token=False,
|
|
55
|
+
required_type=["admin", "automation_basic", "automation_advanced", "actionrunner_basic", "actionrunner_advanced"],
|
|
56
|
+
)
|
|
57
|
+
@add_etag(getter=action_service.get_action)
|
|
58
|
+
def get_action(id: str, record: Action | None, server_version: str, **kwargs) -> Response | tuple[Response, str]:
|
|
59
|
+
"""Get an existing action.
|
|
60
|
+
|
|
61
|
+
Variables:
|
|
62
|
+
id => The id of the action to retrieve
|
|
63
|
+
|
|
64
|
+
Optional Arguments:
|
|
65
|
+
None
|
|
66
|
+
|
|
67
|
+
Result Example:
|
|
68
|
+
{
|
|
69
|
+
...action # The requested action
|
|
70
|
+
}
|
|
71
|
+
"""
|
|
72
|
+
if not record:
|
|
73
|
+
return not_found(err="The specified action does not exist")
|
|
74
|
+
|
|
75
|
+
return ok(record), server_version
|
|
76
|
+
|
|
77
|
+
|
|
49
78
|
@generate_swagger_docs()
|
|
50
79
|
@action_api.route("/", methods=["POST"])
|
|
51
80
|
@api_login(audit=False, check_xsrf_token=False, required_type=["admin", "automation_basic", "automation_advanced"])
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from collections import defaultdict
|
|
3
3
|
from importlib.util import find_spec
|
|
4
|
-
from typing import Any, Optional, TypedDict
|
|
4
|
+
from typing import Any, Literal, Optional, TypedDict, overload
|
|
5
5
|
|
|
6
6
|
from cryptography.exceptions import InvalidTag
|
|
7
7
|
from flask import Response, has_request_context, request
|
|
@@ -35,6 +35,41 @@ class TriggeredAction(TypedDict):
|
|
|
35
35
|
_action_queues: dict[str, NamedQueue[TriggeredAction]] = {}
|
|
36
36
|
|
|
37
37
|
|
|
38
|
+
@overload
|
|
39
|
+
def get_action(
|
|
40
|
+
id: str, as_odm: Literal[True], version: Literal[True], user: User | None = None
|
|
41
|
+
) -> tuple[Action, str]: ...
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@overload
|
|
45
|
+
def get_action(id: str, as_odm: Literal[True], version: Literal[False]) -> Action: ...
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@overload
|
|
49
|
+
def get_action(id: str, as_odm: Literal[True]) -> Action: ...
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@overload
|
|
53
|
+
def get_action(id: str) -> Action: ...
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@overload
|
|
57
|
+
def get_action(id: str, as_odm: Literal[False], version: Literal[True]) -> tuple[dict[str, Any], str]: ...
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@overload
|
|
61
|
+
def get_action(id: str, as_odm: Literal[False], version: Literal[False]) -> dict[str, Any]: ...
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@overload
|
|
65
|
+
def get_action(id: str, as_odm: Literal[False]) -> dict[str, Any]: ...
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def get_action(id: str, as_odm=False, version=False, user: User | None = None):
|
|
69
|
+
"""Retrieve an action from the datastore as an ODM object or dictionary."""
|
|
70
|
+
return datastore().action.get_if_exists(key=id, as_obj=as_odm, version=version)
|
|
71
|
+
|
|
72
|
+
|
|
38
73
|
def _is_builtin_operation(operation_id: str) -> bool:
|
|
39
74
|
"""Return whether an operation is implemented by Howler's built-in actions package."""
|
|
40
75
|
return find_spec(f"howler.actions.{operation_id}") is not None
|
|
@@ -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.1.0.
|
|
155
|
+
version = "4.1.0.dev1582"
|
|
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
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/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.1.0.dev1577 → howler_api-4.1.0.dev1582}/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
|
|
File without changes
|
|
File without changes
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/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.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/odm/models/ecs/autonomous_system.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/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.1.0.dev1577 → howler_api-4.1.0.dev1582}/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.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/__init__.py
RENAMED
|
File without changes
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/comms.py
RENAMED
|
File without changes
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/multi.py
RENAMED
|
File without changes
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/named.py
RENAMED
|
File without changes
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/remote/datatypes/queues/priority.py
RENAMED
|
File without changes
|
|
File without changes
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/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.1.0.dev1577 → howler_api-4.1.0.dev1582}/howler/services/bundle_compat_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.1.0.dev1577 → howler_api-4.1.0.dev1582}/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
|
|
File without changes
|